DETAILED ACTION
This Office action is responsive to the following communication: Amendment filed on 5 January 2026.
Claim(s) 1-20 is/are pending and present for examination. Claim(s) 1, 15, and 18 is/are in independent form.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1, 6-8, 10-12, 15, 18, and 20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Royal et al, USPGPUB No. 2024/0126607, filed on 11 May 2023, and published on 18 April 2024, in view of Chong et al, USPGPUB No. 2023/0074090, filed on 8 September 2021, and published on 9 March 2023.
As per independent claims 1, 15, and 18, Royal, in combination with Chong, discloses:
A method comprising:
receiving via a communication interface a request to execute a database query against a database system, the database query capable of being executed in a plurality of database contexts {See Royal, [0025], wherein this reads over “In some embodiments, load balancer 104 intercepts requests from clients 102a-n and routes the requests to application servers 106a-n to distribute the load.” and “For example, load balancer 104 may route requests (a) in a round robin fashion, (b) to the application server processing the fewest number of requests, (c) to the application server with the lowest current resource utilization, or (d) to the application server with the faster response times. Additionally or alternatively requests may be routed based on other factors, such as the geographic locations of the client and application servers.”};
determining a database context of the plurality of database contexts in which to execute the database query {See Royal, [0026], wherein this reads over “During runtime, applications may generate and submit requests to database server 108 to access a database. In some embodiments, the requests include database queries that conform to a particular language and format, such as the Structured Query Language (SQL). SQL statements may include commands for manipulating database data (e.g., inserting, updating, and deleting data within the database), defining database objects (e.g., creating/deleting tables, schemas, and views) and controlling data access (e.g., granting or revoking a user's ability to perform specified tasks in the database)”};
determining a plurality of usage statistic values for the database system, the plurality of usage statistic values including a contextual usage statistic value that is specific to the database context {See Royal, [0028], wherein this reads over “Query optimizer 112 may determine an estimated cost for each plan based on predicted and/or observed metrics, such as the number of input/output operations needed to carry out the query execution plan, the amount of disk buffer space, and the central processing unit (CPU) utilization.”};
determining a database query execution plan via a processor based at least in part on the contextual usage statistic value, the database query execution plan including a plurality of operations to perform to execute the database query within the database context {See Royal, [0027], wherein this reads over “A query execution plan defines a sequence of operations for generating a query result. For instance, the plan may include logical operators that define relational algebraic functions to process a SQL statement and physical operators that represent objects or routines that implement operations defined by logical operators.”; and [0028], wherein this reads over “Query optimizer 112 may select the query execution plan with the lowest estimated cost”};
determining a database query result by performing the plurality of operations within the database context {See Royal, [0033], wherein this reads over “In some embodiments, workload analyzer 116 compares database queries executed on database server 108 in two or more different time periods. Based on the comparison, workload analyzer 116 may identify differences between the workloads including new database queries (e.g., SQL statements present in a target workload but not a previous workload), missing database queries (e.g., SQL statements present in a prior workload but not the target workload), and changes in query execution plans (e.g., changes in the sequence and/or operators to process a SQL statement common to both workloads). Workload analyzer 116 may further determine the performance impact for each change on the captured workload, such as the impact on total instruction executions, CPU time, elapsed time, buffer gets, I/0 operations, and/or other performance metrics”},
wherein determining the database query execution plan involves retrieving two or more database query execution plans corresponding to the database query from a database query execution plan cache, the two or more database query execution plans being created upon receipt of previous requests to execute the database query against the database system {See Chong, [0067], wherein this reads over “In some scenarios, a version change of software module M3 can occur after block 230 has been performed and the corresponding (first) execution plan has been determined. Then, the physical plan (e.g., stored as data structure 220) can be re-used to perform block 230 with the new version of software module M3, resulting in a different (second) execution plan. The two execution plans can be stored in respective instances of plan data structure 220. That is, both instances of structure 220 can store identical copies of the physical plan (e.g., fields 222, 224, 226) but different versions of execution plan (as respective fields 228).”}; and
transmitting an indication of the database query result via the communication interface {See Royal, Figures 4A-4C}.
Royal fails to expressly disclose the instant feature. Chong is directed to the invention of a staged query compilation with common data structure. Specifically, Chong discloses that “a version change of software module M3 can occur after block 230 has been performed and the corresponding (first) execution plan has been determined” such that “the physical plan (e.g., stored as data structure 220) can be re-used to perform block 230 with the new version of software module M3, resulting in a different (second) execution plan.” See Chong, [0067]. Additionally, Chong discloses that “[t]he two execution plans can be stored in respective instances of plan data structure 220” such that “both instances of structure 220 can store identical copies of the physical plan (e.g., fields 222, 224, 226) but different versions of execution plan (as respective fields 228).” See Chong, [0067]. That is, Chong discloses that a plurality of execution plans may be retrieved from and stored in a cache. It would have been obvious to one of ordinary skill in the art at the time of the effective filing date of the instant application to improve the prior art of Royal such that the execution plan generation of Royal may further encompass the generation of a plurality of execution plans for a query as disclosed by Chong. One of ordinary skill in the art would have been motivated to make the aforementioned combination such that multiple versions of a query execution plan may be generated and stored for a more accurate and efficient execution of a query.
As per dependent claim 6, Royal, in combination with Chong, discloses:
The method recited in claim 1, the method further comprising:
determining an observed performance statistic value by evaluating performance of the plurality of operations within the database system {See Royal, [0017], wherein this reads over “The data collected and/or otherwise tracked for a given workload may include individual database query statements executed within a particular timeframe, execution statistics/metrics associated with executing the query statements within the particular timeframe, and execution contexts for the query statements.”}; and
comparing the observed performance statistic value with historical performance information {See Royal, [0017], wherein this reads over “Once a workload or portion thereof is captured, the workload analyzer may compare the collected workload data with data collected from one or more other workloads from previous timeframes. Based on the comparison, the workload analyzer may detect whether performance is regressing or otherwise changing in a statistically significant manner.”}.
As per dependent claim 7, Royal, in combination with Chong, discloses:
The method recited in claim 6, the method further comprising:
updating the historical performance information based on the observed performance statistic value, wherein the historical performance information identifies a change over time in the performance of the plurality of operations within the database system {See Royal, [0018], wherein this reads over “If issues negatively impacting performance are detected, then the workload analyzer may generate alerts, reports, and/or tuning advice to address the database query statements that are causing the regression. With continuous workload performance monitoring, the workload analyzer may provide early warnings of performance changes and minimize the time-consuming process of troubleshooting issues reactively after server performance has significantly degraded.”}.
As per dependent claims 8 and 20, Royal, in combination with Chong, discloses:
The method recited in claim 6, the method further comprising:
determining whether the observed performance statistic value satisfies a performance statistic threshold based on comparing the observed performance statistic value with the historical performance information {See Royal, [0020], wherein this reads over “Based on the comparison, the workload analyzer may determine whether query performance regressed between the two executions or the current execution and a benchmark computed based on a plurality of previous executions.”}; and
invalidating the database query execution plan in the database query execution plan cache upon determining that the observed performance statistic value does not satisfy the performance statistic threshold {See Royal, [0021], wherein this reads over “If the performance regression exceeds a tolerance threshold, then the workload analyzer may perform additional analytics to determine the cause. For example, the workload analyzer may compare the execution plan for executing the database query in the most recent workload/timeframe with the execution plan for executing the database query in a previous workload/timeframe. If changes to the execution plan are identified, the workload analyzer may add an indication to the report identifying the change's performance impact on the first workload. Additionally or alternatively, the workload analyzer may pin or rollback to a previously accepted execution plan for the regressed query.”}.
As per dependent claim 10, Royal, in combination with Chong, discloses:
The method recited in claim 1, wherein determining the plurality of usage statistic values comprises:
determining a plurality of observed usage statistic values based on database operations information observed by the database system {See Royal, [0033], wherein this reads over “Workload analyzer 116 may further determine the performance impact for each change on the captured workload, such as the impact on total instruction executions, CPU time, elapsed time, buffer gets, I/0 operations, and/or other performance metrics.”}; and
determining a plurality of predicted usage statistic values by applying a prediction model to the plurality of observed usage statistic values {See Royal, [0108], wherein this reads over “In some embodiments, workload analyzer 116 includes an AI engine that trains and applies ML models to generate predictions directed to optimizing workload performance. Such models may be trained using machine learning algorithms that can be iterated to learn a target model f, where the model maps a set of input variables to an output variable using a set of training data.”; and [0109], wherein this reads over “Additionally or alternatively, ML models may be trained and applied for other workload analysis applications. In some embodiments, workload analyzer 116 may train an ML model to detect and infer workload patterns. For example, an ML model may be applied to detect seasonal patterns based on similarities between workload characteristics for different workloads executed at a seasonal interval. The seasonal patterns may be used to select or construct baselines, as previously described, and/or to perform other seasonal-aware operations including anomaly detections”}.
As per dependent claim 11, Royal, in combination with Chong, discloses:
The method recited in claim 1, the method further comprising:
determining a plurality of common usage statistic values for the database system, the plurality of common usage statistic values being general to the database system as a whole, wherein the database query execution plan is also determined based at least in part on the plurality of common usage statistic values {See Royal, [0033], wherein this reads over “In some embodiments, workload analyzer 116 compares database queries executed on database server 108 in two or more different time periods. Based on the comparison, workload analyzer 116 may identify differences between the workloads including new database queries (e.g., SQL statements present in a target workload but not a previous workload), missing database queries (e.g., SQL statements present in a prior workload but not the target workload), and changes in query execution plans (e.g., changes in the sequence and/or operators to process a SQL statement common to both workloads). Workload analyzer 116 may further determine the performance impact for each change on the captured workload, such as the impact on total instruction executions, CPU time, elapsed time, buffer gets, I/0 operations, and/or other performance metrics.”}.
As per dependent claim 12, Royal, in combination with Chong, discloses:
The method recited in claim 1, wherein the database context is specific to a database tenant of a plurality of database tenants {See Royal, [0030], wherein this reads over “Workload analyzer 116 monitors and analyzes workloads on database server 108. In some embodiments, workload analyzer 116 includes capture service 118 for collecting workload data, monitoring service 120 for tracking performance fluctuations, analytic service 122 to provide insights into the causes of any detected performance fluctuations, and tuning service 124 to provide tuning advice to query optimizer 112 based on the analytic insights. Workload analyzer 116 may execute the operations described further in the sections below to optimize the performance of database server 108. Workload analyzer 116 may execute on the same host as database server 108 or remotely, depending on the particular implementation”}.
Claim(s) 3-5, 16, 17, and 19 is/are rejected under 35 U.S.C. 103 as being unpatentable over Royal, in view of Chong, and in further view of Lee et al, U.S. Patent No. 10,552,413, filed on 9 May 2016, and issued on 4 February 2020.
As per dependent claims 3 and 19, Royal, in combination with Chong and Lee, discloses:
The method recited in claim 1, wherein determining the database query execution plan comprises:
selecting the database query execution plan from the two or more database query execution plans at least in part by applying a compute heuristic to the contextual usage statistic value {See Lee, column 8, lines 17-25, wherein this reads over “The OLAP engine 242 can, for example, apply rules to create an optimized execution plan for an OLAP query. The join engine 244 can be used to implement relational operators, typically for non-OLAP queries, such as join and aggregation operations. In a particular implementation, the attribute engine 246 can implement column data structures and access operations. For example, the attribute engine 246 can implement merge functions and query processing functions, such as scanning columns.”}.
Royal fails to expressly disclose the instant feature. Lee is directed to the invention of database workload capture and replay. Specifically, Lee discloses that “[t]he OLAP engine 242 can, for example, apply rules to create an optimized execution plan for an OLAP query. The join engine 244 can be used to implement relational operators, typically for non-OLAP queries, such as join and aggregation operations. In a particular implementation, the attribute engine 246 can implement column data structures and access operations. For example, the attribute engine 246 can implement merge functions and query processing functions, such as scanning columns.” See Lee, column 8, lines 17-25. That is, Lee discloses the rules are applied to generate an optimized execution plan. It would have been obvious to one of ordinary skill in the art at the time of the effective filing date of the instant application to improve the prior art of Royal with that of Lee such that the execution plans of Royal may be generated according to a set of rules as disclosed by Lee. One of ordinary skill in the art would have been motivated to make the aforementioned combination such that the best query execution plan may be selected.
As per dependent claims 4 and 16, Royal, in combination with Chong and Lee, discloses:
The method recited in claim 1, wherein determining the database query execution plan comprises:
providing the database query and the contextual usage statistic value to a database query planner {See Royal, [0027], wherein this reads over “Query compiler 110 generates query execution plans for the incoming database queries based on text of the query statement. A query execution plan defines a sequence of operations for generating a query result. For instance, the plan may include logical operators that define relational algebraic functions to process a SQL statement and physical operators that represent objects or routines that implement operations defined by logical operators”},
receiving the database query execution plan from the database query planner {See Royal, [0027], wherein this reads over “Query compiler 110 generates query execution plans for the incoming database queries based on text of the query statement. A query execution plan defines a sequence of operations for generating a query result. For instance, the plan may include logical operators that define relational algebraic functions to process a SQL statement and physical operators that represent objects or routines that implement operations defined by logical operators”}, and
storing the database query execution plan in a database query execution plan cache {See Lee, column 8, lines 1-5, wherein this reads over “In at least some cases, the execution plan can be cached, such as in the plan cache 236, which can be retrieved (such as by the session manager 208 or the application manager 210) if the query is received again.”}.
As per dependent claims 5 and 17, Royal, in combination with Chong and Lee, discloses:
The method recited in claim 4,
wherein the database query planner determines a plurality of candidate database query execution plans including the database query execution plan {See Royal, [0028], wherein this reads over “In some embodiments, query optimizer 112 analyzes different possible query execution plans for a given database query.”}, and
wherein the database query planner selects the database query execution plan from the candidate database query execution plans based on a cost model determined at least in part based on the contextual usage statistic value {See Royal, [0028], wherein this reads over “Query optimizer 112 may determine an estimated cost for each plan based on predicted and/or observed metrics, such as the number of input/output operations needed to carry out the query execution plan, the amount of disk buffer space, and the central processing unit (CPU) utilization. Query optimizer 112 may select the query execution plan with the lowest estimated cost.”}.
Claim(s) 9 is/are rejected under 35 U.S.C. 103 as being unpatentable over Royal, in view of Chong, and in further view of Qiu et al, USPGPUB No. 2019/0042621, filed on 11 October 2018, and published on 7 February 2019.
As per dependent claim 9, Royal, in combination with Chong and Qiu, discloses:
The method recited in claim 8, wherein invalidating the database query execution plan comprises removing the database query execution plan from a database query execution plan cache storing a plurality of database query execution plans {See Qiu, [0150], wherein this reads over “The database system may determine duration in which an execution plan stored in the database system is not used. If the duration in which the stored execution plan is not used exceeds a specific threshold, the database system may delete the execution plan that is not used in the duration exceeding the specific threshold in order to effectively reduce storage space of the plan cache.”}.
Royal fails to disclose the features of the instant claim. Qiu is directed to the invention of managing execution plans. Specifically, Qiu discloses that “if the duration in which the stored execution plan is not used exceeds a specific threshold, the database system may delete the execution plan that is not used in the duration exceeding the specific threshold in order to effectively reduce storage space of the plan cache.” See Qiu, [0150]. That is, Qiu discloses a system wherein an execution plan may be deleted from the plan cache (i.e., removing the database query execution plan from a query execution plan cache). It would have been obvious to one of ordinary skill in the art at the time of the effective filing date of the instant application to improve the prior art of Royal with that of Qiu for the predictable result of removing the query execution plans of Royal from a cache according to the invention disclosed by Qiu. One of ordinary skill in the art would have been motivated to make the aforementioned combination such that the size of the query execution plan cache may be maintained to improve performance.
Claim(s) 13-14 is/are rejected under 35 U.S.C. 103 as being unpatentable over Royal, in view of Chong, and in further view of Official Notice.
As per dependent claim 13, the Examiner takes Official Notice that the claimed feature of “wherein the contextual usage statistic value is selected from the group consisting of: a volume of database traffic associated with the database tenant, a number of records associated with the database query for the database tenant, and a rate of database requests for the database tenant” would have been widely-known and obvious to one of ordinary skill in the art. That is, the claimed features of “a volume of database traffic”, “a number of records”, and “a rate of database requests” are commonly-found features within the art of databases. It would have been obvious to one of ordinary skill in the art at the time of the effective filing date of the instant application to improve the prior art of Royal with the aforementioned features such that the metric values of Royal may further comprise the widely-known and obvious features of “a volume of database traffic”, “a number of records”, and “a rate of database requests.” One of ordinary skill in the art would have been motivated to make the aforementioned combination such that the metric evaluation of Royal may be further specified and defined by the aforementioned metrics in determining an appropriate execution plan.
As per dependent claim 14, the Examiner takes Official Notice that the claimed feature of “wherein the contextual usage statistic value is a measure of database usage for a unit of computing resources within the database system, the unit of computing resources being selected from the group consisting of: a geographic region, a domain, a subdomain, and one or more servers” would have been widely-known and obvious to one of ordinary skill in the art. That is, the claimed features of “a geographic region, a domain, a subdomain, and one or more servers” are commonly-found features within the art of databases. It would have been obvious to one of ordinary skill in the art at the time of the effective filing date of the instant application to improve the prior art of Royal with the aforementioned features such that the metric values of Royal may further comprise the widely-known and obvious features of “a geographic region, a domain, a subdomain, and one or more servers” One of ordinary skill in the art would have been motivated to make the aforementioned combination such that the metric evaluation of Royal may be further specified and defined by the aforementioned metrics in determining an appropriate execution plan.
Response to Arguments
Applicant’s arguments with respect to the claim rejections under 35 U.S.C. 102 have been considered but are moot in view of the newly cited prior art rejection under 35 U.S.C. 103 made in view of Applicant’s Amendment.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to PAUL KIM whose telephone number is (571)272-2737. The examiner can normally be reached Monday-Friday, 9AM-5PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Neveen Abel-Jalil can be reached on (571) 270-0474. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Paul Kim/
Primary Examiner
Art Unit 2152
/PK/