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 .
DETAILED ACTION
The Action is responsive to the Amendments and Remarks filed with the Request for Continued Examination on 2/23/2026. Claims 1-18 and 20 are pending claims. Claims 1, 11, and 17 are written in independent form. Claim 19 has been cancelled.
Claim Interpretation
Claims 1, 11, and 17 recite the phrases “accessible” which is being understood as the ability to access but is not actively performing any accessing step/limitation. Examiner suggests to amend the claim limitations to recite all of the steps in a positive manner.
Claims 1, 11, and 17 recites the limitation “wherein the profiling results…are stored in a storage repository accessible to the computer system” which is being interpreted to have a scope of “wherein the profiling results…are stored in a storage repository”. However, for the purpose of compact prosecution, the limitation is being addressed herein as if all of the steps are recited in a positive manner.
Claims 6 and 15 recite the phrase “to prevent” which is being understood as the intent to prevent but is not actively performing any prevention step/limitation. Examiner suggests to amend the claim limitations to recite all of the steps in a positive manner.
Claims 6 and 15 recites the limitation “…invalidating a previous query execution plan for the database statement to prevent the database process from executing the database statement without issuing the request to profile the execution of the database statement” which is being interpreted to have a scope of “…invalidating a previous query execution plan for the database statement”. However, for the purpose of compact prosecution, the limitation is being addressed herein as if all of the steps are recited in a positive manner.
Claim Rejections - 35 USC § 103
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-7,9-15, 17-18, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Belknap et al. (U.S. Pre-Grant Publication No. 2014/0236921, hereinafter referred to as Belknap) and further in view of Tokusho et al. (U.S. Pre-Grant Publication No. 2009/0300017, hereinafter referred to as Tokusho).
Regarding Claim 1:
Belknap teaches a method for profiling an execution of a database statement, the method comprising:
Receiving, by a computer system and from a database process before the database process executes the database statement, a request to profile the execution of the database system by the database process,
Belknap teaches receiving a command to be executed (Para. [0097]) and “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan,” (Para. [0101]) thereby teaching a request to profile the execution being received before the database process executes the statement.Belknap further teaches receiving the request from a database process by teaching “When a database server receives a database command from a database application” (Para. [0010]) and “Database applications interact with a database server by submitting to the database server commands that cause the database server to perform operations on data stored in a database.” (Para. [0008]).
Wherein the request specifies a process identifier (ID) of the database process;
Belknap teaches “ the list is checked to see if an identifier for the query is already on the list. In response to determining that an identifier for the query is not already on the list, an identifier for the query may be placed on the list.” (Para. [0106]) thereby teaching using identifiers that identify the database process.
Spawning, by the computer system via an orchestrator process, a profiling process that establishes, using the process ID, a profiling session for the database process in which the profiling process profiles the execution of the database statement and generates profiling results identifying performance metrics associated with the execution,
Belknap teaches receiving a command to be executed (Para. [0097]) and “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan,” (Para. [0101]) and “ the list is checked to see if an identifier for the query is already on the list. In response to determining that an identifier for the query is not already on the list, an identifier for the query may be placed on the list.” (Para. [0106])Therefore, Belknap teaches spawning by a process the profiling process that establishes a profiling session using the identifier and that generates collected data (profiling results).
Belknap further teaches identifying a set of performance metrics associated with the execution of the database statement by teaching “The information recorded may include, for example, performance statistics collected during execution of the first plan, data indicating the execution context during execution of the first plan, and properties of the first plan.” (Para. [0058]).It is noted that establishing a profiling session for the database process “using the process ID” is broadly recited and does not specify how the process ID is used in the establishment of the profiling session.
Wherein the profiling process is spawned as a child computer process of the orchestrator process distinct from the database process such that the profiling process does not inherit states from the database process;
Belknap teaches “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan” (Para. [0101]) thereby teaching that the collection of various data (profiling process) is distinct/readily distinguishable from the execution of the query plan. Belknap further teaches “The information recorded may include, for example, performance statistics collected during execution of the first plan, data indicating the execution context during execution of the first plan, and properties of the first plan” (Para. [0058]) thereby teaching that the recorded information does not include an inherited state, or properties, from the database process.
Belknap further teaches “verification of an unverified plan occurs concurrently with executing the database command according to a verified plan. The database server receives a first request to execute a database command. The database server determines a first plan for executing the database command, but the first plan is an unverified plan. In response to the first request, the database server executes the database command according to the first plan. Concurrently, the database server executes the database command according to a verified plan.” (Para. [0067]) and “trigger one or more information capture mechanisms during the execution of the query plan for the database command, which information may be subsequently recorded in step 270.” (Para. [0115]), thereby teaching sending a profiling request for two query plans related to the same database command, thus a child process of the orchestrator process.
Detecting, by the computer system, an occurrence of a trigger event indicating that the profiling process should be terminated; and
Belknap teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches detecting trigger event indicating “the end of the [trial] period” and thus terminating the profiling process of the probationary period collecting performance statistics.
Terminating, by the computer system, the profiling process in response to the occurrence of the trigger event, wherein the profiling results are stored in a storage repository accessible to the computer system.
Belknap teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches detecting trigger event indicating “the end of the [trial] period” and thus terminating the profiling process of the probationary period collecting performance statistics.
Belknap teaches “A database server may store "profiles" for certain database commands. These profiles comprise tuning information that assists the query optimizer in making better decisions about the operations it may use to execute a database command” (Para. [0024]).
Belknap explicitly teaches all of the elements of the claimed invention as recited above except:
The profiling process does not inherit global states from the database process;
However, in the related field of endeavor of a database transaction processes, Tokusho teaches:
The profiling process does not inherit global states from the database process;
Tokusho teaches “If the description is included, the database task control unit 109 temporarily generates a database task in the described memory area and the generated database task starts executing the transaction process requested by the application 102. If the description is not included, the database task control unit 109 saves into a context saving area 113 a context 117 consisting of register information, runtime stack information, and global variable area information of the database task 111” (Para. [0050]). Tokusho further teaches “The global variable area information of the database task 111 is a snapshot of a global variable area during the operation of the database task 111. The global variable area is a memory area that stores a value of a global variable during execution of a program.” (Para. [0064])Therefore, Tokusho teaches handling situations where global states/variables are and are not inherited based on whether or not a “description is included” when generating a task (process) by a database task control unit.
Thus, it would have been obvious to one of ordinary skill in the art, having the teachings of Tokusho and Belknap at the time that the claimed invention was effectively filed, to have modified the systems and methods for executing a database command, as taught by Belknap, with the transaction parallel control method and database management system, as taught by Tokusho.
One would have been motivated to make such combination because Tokusho teaches “The transaction parallel control with the prioritized preemptive mode includes a method of giving a higher priority to a transaction process with higher urgency or importance. In this method, if a request for a transaction process with a higher priority is generated while executing a transaction process, resources acquired by the transaction process with a lower priority are released to enable the transaction process with a higher priority to acquire necessary resources and the CPU usage right is switched to the transaction process with a higher priority. This enables the reduction of response time for processes with higher urgency or importance.” (Para. [0013]).
Regarding Claim 2:
Tokusho and Belknap further teach:
Wherein the detecting includes receiving, subsequent to the execution of the database statement by the database process, a termination request from the database process to terminate the profiling session, wherein the terminating is based on the termination request.
Belknap teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches receiving the trigger event indicating “the end of the [trial] period” and thus the termination request to terminate the profiling process of the probationary period collecting performance statistics.
Regarding Claim 3:
Tokusho and Belknap further teach:
Receiving, by the computer system, an indication that specifies a time duration for how long the profiling session is to be active, wherein the detecting includes determining that the profiling session has been active for at least the time duration.
Belknap teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches both an indication specifying a time duration for how long the probation is active, and tracking an indication that the active time has surpassed the trial period time.
Regarding Claim 4:
Tokusho and Belknap further teach:
Maintaining, by the computer system, a mapping between a set of profiling processes and a set of database processes based on database process IDs and profiling process IDs,
Belknap teaches “The database server determines a plan for executing the particular command. The database server adds information related to the plan to a plan history associated with the particular command. The plan history comprises information related to a plurality of plans that have been generated for the particular command. The information related to the plan may include, for example, properties of the plan, an outline of the plan, and statistics collected during execution of the plan.” (Para. [0060]) and “Each profile 153 and stored outline 154 may be associated with a different database command” (Para. [0078]).Belknap further teaches using identifiers to associate data by teaching “the database server may maintain this baseline data in a separate column of the plan history, or as a separate table indexed upon an identifier from the plan history” (Para. [0161]).
Updating, by the computer system, the mapping to map the profiling process to the database process;
Belknap teaches “The database server determines a plan for executing the particular command. The database server adds information related to the plan to a plan history associated with the particular command. The plan history comprises information related to a plurality of plans that have been generated for the particular command. The information related to the plan may include, for example, properties of the plan, an outline of the plan, and statistics collected during execution of the plan.” (Para. [0060]).
In response to the occurrence of the trigger event, the computer system identifying, based on information associated with the trigger event, the profiling process from the set of profiling processes of the mapping to terminate.
Belknap teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches detecting trigger event indicating “the end of the [trial] period” and thus terminating the profiling process of the probationary period collecting performance statistics.
Belknap teaches “A database server may store "profiles" for certain database commands. These profiles comprise tuning information that assists the query optimizer in making better decisions about the operations it may use to execute a database command” (Para. [0024]).
It is noted that the claim merely recites determining which profiling processes of the mapping to terminate, but does not recite using the mapping for performing the step, just that the profiling processes to terminate are identified on the mapping.
Regarding Claim 5:
Tokusho and Belknap further teach:
Receiving, by the computer system, a profiling configuration as part of a request to start profiling subsequent executions of the database statement; and
Belknap teaches “the query optimizer evaluates the database command and generates one or more possible query plans for executing the database command. The query optimizer selects one of the generated query plans for execution by the database server.” (Para. [0099]) where “ the query optimizer returns a query plan for the database command.” (Para. [0100]) and “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan” (Para. [0101]). Therefore, Belknap teaches receiving a profiling configuration for beginning to capture/collect the various data related to the execution of the query plan.Belknap further teaches “ if a plan history stores entries for a certain number of recent executions of a query plan, upon executing the query plan, the database server may add a new entry (or replace an outdated entry) with the relevant information from the current execution” (Para. [0141]) thereby teaching indicating which information is “relevant information”.
Generating, by the computer system based on the profiling configuration, a query execution plan of the database statement that includes a command to send the request to profile the execution of the database statement,
Belknap teaches “the query optimizer evaluates the database command and generates one or more possible query plans for executing the database command. The query optimizer selects one of the generated query plans for execution by the database server.” (Para. [0099]) where “ the query optimizer returns a query plan for the database command.” (Para. [0100]) and “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan” (Para. [0101]).
Wherein the query execution plan is executed by the database process.
Belknap teaches “the query optimizer returns a query plan for the database command.” (Para. [0100]) and “the database server executes the database command using the returned query plan.” (Para. [0101]).
Regarding Claim 6:
Tokusho and Belknap further teach:
In response to receiving the profiler configuration, the computer system invalidating a previous query execution plan for the database statement to prevent the database process from executing the database statement without issuing the request to profile the execution of the database statement.
Belknap teaches “the database server may utilize information in a plan history to notify an administrator that a certain plan has become invalid because of an event such as a dropped index” (Para. [0155]) and “At the end of the period, the new plan is either permanently verified as acceptable for executing the database command, or marked as unacceptable, in which case it may no longer be used to execute the database command.” (Para. [0184]). Belknap further teaches preventing the database process from executing the database statement without issuing the request to profile the execution by teaching “Under certain circumstances, the query optimizer may, at step 450, determine that none of the plans in the plan baseline are valid for the current execution context, and therefore are incapable of satisfying the query in the current execution context.” (Para. [0166]).
Regarding Claim 7:
Tokusho and Belknap further teach:
Wherein the profiler configuration identifies a first number of executions of the database statement to profile; and
Belknap further teaches “ if a plan history stores entries for a certain number of recent executions of a query plan, upon executing the query plan, the database server may add a new entry (or replace an outdated entry) with the relevant information from the current execution” (Para. [0141]) thereby teaching identifying a number of executions of the database statement in the profile.
Wherein the method further comprises:
Initializing, by the computer system, profiling processes in response to receiving requests from one or more database processes until a second number of executions of the database statement satisfies the first number of executions identified by the profiler configuration.
Belknap teaches “the database server may also refresh certain plan history information that needs to be updated often by periodically mining data from the cursor cache rather than directly updating the plan history after every execution. For example, the cursor cache may store data indicating the last execution time for a recent number of database commands, or implement a counter indicating how many times a database command or query plan has been executed since the last sweep of the cursor cache. The database server may periodically sweep the cursor cache and add the mined data to the appropriate plan histories.” (Para. [0150]). Belknap further teaches “the administrator may configure the database server to, before capturing information (or adding the command to the statement log), determine if one or a combination of various indicators for resource utilization (e.g. elapsed time, processor usage) cross some pre-defined threshold during execution of the database command. Information is only captured if the various indicator or indicators cross the predefined threshold.” (Para. [0117]).Therefore, Belknap teaches capturing the data from the cache when the counter indicating how many times a database command or query plan has been executed crosses a predefine threshold number of times.
Regarding Claim 9:
Tokusho and Belknap further teach:
Wherein the profiling results include a call stack identifying a plurality of functions executed during the execution of the database statement and one or more execution times associated with the plurality of functions.
Belknap teaches “SMB 150 stores a statement log 152. Statement log 152 comprises identifiers indicating a number of database commands. These database commands may be, for example, database commands previously evaluated by query optimizer 140 over a certain period of time.” (Para. [0077])
Belknap further teaches “the database server may persistently maintain a list indicating database commands that it has previously executed. This list may be, for example, in the form of statement log 152. The statement log may indicate each command by its original text, or the list may indicate each command using a more compact identifier, calculated from either the original text of the command, or the selected query plan.” (Para. [0104]).Belknap further teaches “The captured information may be stored in any table, database, or repository available to the database server. For example, the captured information may be stored in a plan history, as described in section 3.2, or an SMO 157 of SMB 150. In one embodiment, the captured information for a database command includes: outlines for the query plans generated by the query optimizer, an indication of the particular query plan used to execute the database command, the text of the database command, plan execution statistics, such as execution time, processor usage, and input/output usage, compilation environment, bind variable values, session settings, system configuration parameters, and any other interesting properties of the current execution context.” (Paras. [0110]-[0114]).
Regarding Claim 10:
Tokusho and Belknap further teach:
Wherein the terminating includes issuing a termination request to the profiling process that causes the profiling process to write the profiling result to the storage repository and terminate, and
Belknap teaches “the database server executes the database command using the returned query plan. According to an embodiment, while executing the query plan, the database server collects various data related to the execution of the query plan” (Para. [0101]) and when the execution has terminated, “for database commands that have been identified as repeatable in step 260, the database server may automatically record information related to the execution of the query plan for that database command.” (Para. [0109]) or at “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches different indications of when to terminate the data collection for the command and when to store the collected data in storage.
Regarding Claim 11:
Some of the limitations herein are similar to some or all of the limitations of Claim 1.
Tokusho and Belknap further teach:
A non-transitory computer-readable medium having program instructions stored thereon that are capable of causing a computer system to perform operations (Belknap - Para. [0210] & Claim 17).
Regarding Claim 12:
All of the limitations herein are similar to some or all of the limitations of Claim 2.
Regarding Claim 13:
All of the limitations herein are similar to some or all of the limitations of Claim 4.
Regarding Claim 14:
All of the limitations herein are similar to some or all of the limitations of Claim 5.
Regarding Claim 15:
All of the limitations herein are similar to some or all of the limitations of Claim 6.
Regarding Claim 17:
Some of the limitations herein are similar to some or all of the limitations of Claim 1.
Tokusho and Belknap further teach:
A non-transitory computer-readable medium having program instructions stored thereon that are capable of causing a computer system to perform operations comprising:
Belknap teaches “The term "machine-readable medium" as used herein refers to any medium that participates in providing data that causes a machine to operation in a specific fashion. In an embodiment implemented using computer system 700, various machine-readable media are involved, for example, in providing instructions to processor 704 for execution. Such a medium may take many forms, including but not limited to storage media and transmission media. Storage media includes both non-volatile media and volatile media.” (Para. [0210]) and “one or more non-transitory computer-readable media” (Claim 17).
Receiving a request to execute a database statement;
Belknap teaches “a database server, such as database server 110, receives a request to execute a database command, such as database command 135” (Para. [0097]).
Delaying the execution of the database statement for a period of time to allow the profiling session to be established; and
Belknap teaches “The plan history may also comprise information related to the actual executions of each plan that the database server has used for the database command over a certain period of time. This information may include statistics such as the number of times the plan has been executed, the timestamp of the last execution for the plan, total parse time, number of rows fetched by each operation in the plan, total elapsed time for execution, CPU time, memory size, number of physical and buffered I/Os, wait times, number of system messages, and other performance data.”(Para. [0128]) thereby teaching the execution being delayed for a wait time.Belknap also teaches “database server employs additional filters before deciding to capture information” and “the administrator may configure the database server to, before capturing information (or adding the command to the statement log), determine if one or a combination of various indicators for resource utilization (e.g. elapsed time, processor usage) cross some pre-defined threshold during execution of the database command. Information is only captured if the various indicator or indicators cross the predefined threshold.” (Para. [0116]) thereby teaching waiting to execute the command until the system is established to collect the desired data.
After the period of time, executing the database statement, wherein the profiling results associated with the execution of the database statement are stored in a storage repository accessible to the computer system.
Belknap teaches “database server employs additional filters before deciding to capture information” and “the administrator may configure the database server to, before capturing information (or adding the command to the statement log), determine if one or a combination of various indicators for resource utilization (e.g. elapsed time, processor usage) cross some pre-defined threshold during execution of the database command. Information is only captured if the various indicator or indicators cross the predefined threshold.” (Para. [0116]) thereby teaching waiting to execute the command until the system is established to collect the desired data, and then collecting and storing the data after the period of time spent setting up the system to collect the data.
Regarding Claim 18:
Tokusho and Belknap further teach:
After executing the database statement, issuing a termination request to terminate the profiling process, wherein the termination request includes the process ID of the database process.
Belknap teaches using identifiers associated with the database command and data collection by teaching “the first time a query is received, the list is checked to see if an identifier for the query is already on the list. In response to determining that an identifier for the query is not already on the list, an identifier for the query may be placed on the list.” (Para. [0106]).
Belknap also teaches detecting “the end of the [trial] period” (Para.[0184]) which is a preliminary acceptance of the query plan where “verification data is generated for the new plan indicating that it is preliminarily assumed to be acceptable. The new plan is then effectively placed on probation, during which time the query optimizer may utilize the query plan as if it were permanently verified. During this time, performance statistics are collected and maintained for the new plan.” (Para. [0186]).Therefore, Belknap teaches detecting trigger event indicating “the end of the [trial] period” for a particular query plan related to a database command and thus terminating the profiling process of the probationary period based on identifiers of the plan and query resulting in the collected performance statistics.
Regarding Claim 20:
Tokusho and Belknap further teach:
Wherein the profile request includes a database statement ID associated with the database statement and an indication of a time duration for how long the profiling session is to be active.
Belknap teaches “Accordingly, the database server may, upon first generating a new plan, utilize that plan without it being verified during a certain trial period. At the end of the period, the new plan is either permanently verified as acceptable for executing the database command, or marked as unacceptable, in which case it may no longer be used to execute the database command.” (Para. [0184])Therefore, Belknap teaches an indication for how long the profiling of the new plan should be active during the trial period with a known “end of the trial period”.
Claim(s) 8 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over Tokusho and Belknap, and further in view of Bijon et al. (U.S. Pre-Grant Publication No. 2024/0303373, hereinafter referred to as Bijon).
Regarding Claim 8:
Tokusho and Belknap explicitly teaches all of the elements of the claimed invention as recited above except:
Receiving, by the computer system, an indication identifying a number of profiling sessions that are permitted to be active concurrently; and
Rate constraining, by the computer system, initialization of profiling processes based on the number of profiling sessions that are permitted to be active concurrently.
However, in the related field of endeavor of a query processing system, Bijon teaches:
Receiving, by the computer system, an indication identifying a number of profiling sessions that are permitted to be active concurrently; and
Bijon teaches “the aggregation system can include additional and/or enhanced constraints (e.g., query rate limits)” and “In additional examples, the aggregation system can incorporate rate limiting options to prevent consumers from asking too many questions” (Para. [0194]). Therefore, Bijon in combination with Belknap teach receiving an indication of the number of queries being asked (Bijon – Para. [0194]), where the queries represent the number of data collection processes (Belknap – Para. [0101]) being executed concurrently (Belknap - in parallel Para. [0154]).
Rate constraining, by the computer system, initialization of profiling processes based on the number of profiling sessions that are permitted to be active concurrently.
Bijon teaches “the aggregation system can include additional and/or enhanced constraints (e.g., query rate limits)” and “In additional examples, the aggregation system can incorporate rate limiting options to prevent consumers from asking too many questions” (Para. [0194]). Therefore, Bijon in combination with Belknap teach receiving an indication of the number of queries (Bijon – Para. [0194]), where the queries represent the number of data collection processes (Belknap – Para. [0101]) being executed concurrently (Belknap - in parallel Para. [0154]) where rate limiting is performed on the number of queries/data collection processes when there are “too many questions”.
Thus, it would have been obvious to one of ordinary skill in the art, having the teachings of Bijon and Belknap at the time that the claimed invention was effectively filed, to have modified the systems and methods for executing a database command, as taught by Belknap and the transaction parallel control method and database management system, as taught by Tokusho, with the additional and/or enhanced constraints, as taught by Bijon.
One would have been motivated to make such combination because Belknap teaches “Criteria identifying costs to be considered in judging optimality, as well as the weightings for those costs, may be defined in the code of the database server or configured by administrators of the database server. Costs criteria may include a variety of factors, including speed and resource usage. For example, some database server configurations may weigh a query plan that performs quickly as more optimal than one that uses less memory, while other database server configurations may prefer alternative cost weightings for judging optimality.” (Para. [0019]) and Bijon teaches an additional way of managing resource usage by teaching rate limiting options that prevent consumers from asking too many questions that may…constraint data volume (Para. [0194]) and “ jobs may be prioritized and then processed in the prioritized order. In an embodiment, the job scheduler and coordinator 218 determines a priority for internal jobs that are scheduled by the compute service manager 108 of FIG. 1 with other “outside” jobs such as user queries that may be scheduled by other systems in the database but may utilize the same processing resources in the execution platform 110.” (Para. [0065]). It would have been obvious to a person having ordinary skill in the art that limiting and prioritizing queries would improve the ability for resources to perform queries and query-related tasks more quickly.
Regarding Claim 16:
All of the limitations herein are similar to some or all of the limitations of Claim 8.
Response to Amendment
Applicant’s Amendments, filed on 2/23/2026, are acknowledged and accepted.
In light of the Amendments and Remarks filed on 2/23/2026, the 112(a) rejection of claims 1-20 has been withdrawn.
Response to Arguments
In light of the Amendments and Remarks filed on 2/23/2026 and further review of the Application’s specification, the 101 rejection of claims 1-20 for being directed to an abstract idea without significantly more has been withdrawn. In particular, Applicant convincingly argues on Pages 11-14 of the Remarks that the claims “the claimed improvement to the technical field amounts to a practical application of any underlying abstract idea such that the claims are not "directed to" an abstract idea at Step 2A Prong Two and the claimed improvement to the technical field amounts to significantly more than an abstract idea such that the claims include an "inventive concept" at Step 2B.” (Remarks Page 11) where “the improved mechanism separates the task of performance monitoring from the task of database statement execution by using a separate orchestrator to spawn profiling processes distinct from the database processes executing the database statements, thereby enabling granular level analysis without degrading the performance of those database processes or exposing them to security risks.” (Remarks Page 12) and “since the profiling is conducted by a profiling process that is distinct from a database process, issues with the profiling process do not degrade the performance of the database process and the profiling process also does not inherit properties (e.g., global states) from the database process-the profiling process is not exposed to data that it should not observe and may not pose a security risk to the database process” (Remarks Page 13).In the Remarks, Applicant specifically cites Paragraphs [0012]-[0015] of the Specification for support related to the Step 2A Prong Two analysis argument, and Paragraphs [0014], [0015], [0022], [0042]-[0044], [0058], and [0062] and Fig. 4 of the Specification for support for the claim amendments.
On pages 16-17 of the Remarks filed on 2/23/2026, Applicant argues that “Belknap does not discuss a database process sending a profiling request with its own process ID or a profiling session being established using that database process's ID. The Office cites to a portion in Belknap in which it mentions checking a list for the identifier of a query. See Office Action at pg. 24. A query ID is not the same thing as the process ID of the database process that executes the query. Belknap does not discuss database process IDs. Belknap therefore cannot be said to teach or suggest ‘receiving, by a computer system and from a database process before the database process executes the database statement, a request to profile the execution of the database statement by the database process, wherein the request specifies a process identifier (ID) of the database process’ and ‘a profiling process that establishes, using the process ID, a profiling session for the database process,’ as recited by amended claim 1.”Applicant’s argument is not convincing because the claims merely recite the request specifying “a process identifier (ID) of the database process” which is understood as any identifier of a database process, not “a profiling request with its own process ID” as is being argued. Further, as is noted in the rejection above, establishing a profiling session for the database process “using the process ID” is broadly recited and does not specify how the process ID is used in the establishment of the profiling session.
On page 17 of the Remarks filed on 2/23/2026, Applicant argues that “Belknap does not discuss a database process sending out a request for the execution of a database statement by it to be profiled. The Office cites to a portion in Belknap in which it mentions that a database server executes a database command using a query plan and collects various data relating to the execution. See Office Action at pg. 24. This cited portion does not discuss the database server sending out any request (or even use the term ‘request’), much less one for a database statement execution to be profiled. Belknap does not discuss this concept anywhere in its disclosure. Thus, Belknap cannot be said to teach or suggest ‘receiving, ... from a database process before the database process executes the database statement, a request to profile the execution of the database statement by the database process,’ as recited by amended claim 1.”Applicant’s argument is not convincing to overcome Belknap, but has been further clarified in the rejection above that the database command is received “from a database application” as is taught in at least Paragraphs [0008] and [0010] of Belknap.
On page 17 of the Remarks filed on 2/23/2026, Applicant argues that “Belknap does not discuss spawning a distinct profiling process as a child computer process of an orchestrator process. For the previously-recited initializing step, the Office cites to a portion in Belknap in which it mentions that a database server executes a database command using a query plan and collects various data relating to the execution. See Office Action at pg. 24. Nothing in these cited passages (or elsewhere in Belknap) discloses 1) a distinct orchestrator process, 2) spawning a profiling process, or 3) a parent-child process relationship where the profiling process is a child process of the orchestrator process distinct from a database process. Thus, Belknap cannot be said to teach or suggest ‘spawning, ... via an orchestrator process, a profiling process that establishes, using the process ID, a profiling session for the database process ..., wherein the profiling process is spawned as a child computer process of the orchestrator process distinct from the database process such that the profiling process does not inherit global states from the database process,’ as recited by amended claim 1.”Applicant’s argument is not convincing as the spawning of the profiling process as a child computer process of the orchestrator process was not addressed at Office Action at pg. 24, but instead was a feature previously addressed with respect to Claim 19, now cancelled, on page 38 of the Office Action. It is further noted that the statement that Belknap does not disclose “a distinct orchestrator process” or “spawning a profiling process” is not agreed, and the features have been addressed and rejected above.
On page 18 of the Remarks filed on 2/23/2026, Applicant argues that “Belknap does not discuss a trigger event for terminating a profiling process. The Office relies on a portion in Belknap in which it mentions placing a query plan under a probation period during which statistics are collected. See Office Action at pg. 26. This is materially different from terminating a profiling computer process that established a session to profile a particular execution of a database statement. Thus, Belknap cannot be said to teach or suggest ‘terminating ... the profiling process in response to the occurrence of the trigger event,’ as recited by amended claim 1.”Applicant’s argument is not convincing because the claim feature being argued merely recites that the process terminates, and thus ends, in response to some sort of occurrence of any event that triggers it. Based on this broadest reasonable interpretation of the claim language, and the cited portions of Belknap are found to teach the feature. It is further noted that Paragraph [0186] was not the only cited portion being relied upon for detecting the trigger event and terminating the profiling process, but Paragraphs [0024], [0184], and [0186] together were relied upon as teaching the limitations being argued.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Doering et al. (U.S. Patent No. 9,542,400) teaches “different business process may be identified to process a CRM service and a database service” (Col. 11 Line 62 – Col. 12 Line 11) and “a trigger event can include a request to terminate one or more services, a request to suspend one or more services, a scheduled back-up event, an on-demand back-up event, or similar event. Upon receiving the message associated with the trigger event the TAS module 204 can pass the message to an archive request processing module 801. The archive request processing module 802 can evaluate the message to determine what archive request information 806 is to be passed to the SDI module 206. For example, the archive request processing module can determine which services are to be archived and whether archive support is available for the customer's subscription.” (Col. 24 Lines 26 – 46).
Lang et al. (U.S. Pre-Grant Publication No. 2008/0028095) teaches optimizing throughput of a stream processing system are disclosed. The method comprises analyzing a set of input streams and creating, based on the analyzing, an input profile for at least one input stream in the set of input streams. The input profile comprises at least a set of processing requirements associated with the input stream. The method also comprises generating a search space, based on an initial configuration, comprising a plurality of configurations associated with the input stream. A configuration in the plurality of configurations is identified that increases throughput more than the other configurations in the plurality of configurations based on at least one of the input profile and system resources.
Jain et al. (U.S. Patent No. 11,805,066) teaches “the availability of a port 190 for service may further depend on other factors, such as service rate constraints. For example, hardware and/or logical constraints such as described elsewhere herein may make it undesirable or even impossible to service the same port 190 on back-to-back clock cycles, or more frequently than every third clock cycle, or at even lower rates, depending on the embodiment. A port 190 may thus be assigned a service rate that indicates how frequently the port 190 may be serviced.” (Col. 10 Lines 53 – 64).
Ben-Natan et al. (U.S. Pre-Grant Publication No. 2012/0150880) teaches propagating source identification information from an application front-end system in an application layer to a data layer inspection system associated with a back-end system. An incoming user request is received, at the data layer inspection system, from a gateway system associated with the application front-end system. One or more outgoing statements targeting a back-end system are received at the data layer inspection system. The data layer inspection system accesses a mapping data structure based on the one or more outgoing statements to thereby correlate the one or more outgoing statements with the incoming user request. The data layer inspection system retrieves source identification information associated with the incoming user request based on the correlation of the one or more outgoing statements with the incoming user request. The data layer inspection system performs a data layer inspection operation based on the source identification information.
McLaughlin, Jr. (U.S. Patent No. 7,206,805) teaches executing distributed transactions. A coordinator and one or more participants cooperate to execute a distributed transaction, the distributed transaction including for each participant a transaction executed by the participant. To manage the transaction, the coordinator and the participant communicate over a network using, for example, a stateless protocol. Before each participant commits the transaction, the participants determine that the coordinator has committed the transaction. The coordinator commits the transaction after receiving acknowledgment from all the participants that they will commit the transaction. To determine whether the coordinator has committed the transaction, a participant transmits a message to the coordinator to acknowledge that it will commit the distributed transaction. The participant commits its respective transaction if it receives an acknowledgement from the coordinator. For the particular transaction being executed by a participant, the participant prevents other transactions from modifying a data item affected by the particular transaction. The participant will prevent such modifications until termination criteria for the particular transaction is satisfied, in which case the participant terminates the transaction.
Gounares et al. (U.S. Pre-Grant Publication No. 2013/0074092) teaches a configurable memory allocation and management system may generate a configuration file with memory settings that may be deployed at runtime. An execution environment may capture a memory allocation boundary, look up the boundary in a configuration file, and apply the settings when the settings are available. When the settings are not available, a default set of settings may be used. The execution environment may deploy the optimized settings without modifying the executing code.The reference further teaches “The remote optimizer may identify certain states in which a set of configuration parameters may be valid. The state definition may include static state information, such as hardware and software configuration, as well as dynamic state information, such as the amount of available memory and the state of other applications running on the system. The combination of static and dynamic state information may be included in a configuration file to identify the appropriate state for specific settings.” (Para. [0018]) and “A global state for the system may be determined in block 406. The global state may be any parameter or other information that may define the state of hardware, software, or other components that may affect how the target code may execute. In some embodiments, a configuration file may indicate for which states certain values may be applicable.” (Para. [0081]) where “when the settings are not available, a default set of settings may be used” (Para. [0004]).
Todd (U.S. Patent No. 7,093,088) teaches managing a migration of a data set from at least one first storage location to at least one second storage location, wherein read requests to the data set from at least one application program executing on a computer system initially are serviced from the at least one first storage location. The data set is copied from the at least one first storage location to the at least one second storage location, and then at least one aspect of the computer system is modified so that read requests to the data set are serviced from the at least one second storage location to achieve the migration. In one embodiment, the migration is subsequently undone by modifying the at least one aspect of the computer system so that read requests to the data set are again serviced from the at least one first storage location. In another embodiment, after the migration is performed, a determination is made as to whether to finalize the migration.The reference further teaches “The data structure 703 further includes a global state field 715 for the migration session's global state. This field 715 may not be populated when the data structure is submitted to initiate the session, but can be used when the agent presents the data structure to report on the status of the session. As discussed below, in the embodiment of FIG. 7, the agent ascertains the state (i.e., status) of each source/target pair migration. If queried about the status of the overall migration session, the agent may aggregate source/target pair status indications to determine a global state for the migration session. The aggregation and characterization of global state may be performed in any of a number of ways, as the invention is not limited in this respect.” (Column 24 Line 48 – Column 25 Line 24).
Kondiles et al. (U.S. Pre-Grant Publication No. 2024/0370433) teaches “In some embodiments, one or more database task performance modules 2740 of a given node 37 can be implemented via one or more processing modules 44 and/or one or more processing core resources 48 of the given node 37. The database task performance modules 2740 can access and/or execute a corresponding operating system and/or other operational instructions stored in local memory 2730 as system configuration data 2735.i−1 via at least one processor of the one or more database task performance modules 2740. Execution of the corresponding operational instructions via the one or more database task performance modules 2740 can cause a given node to execute some or all functionality of nodes 37 as described herein, for example, in accordance with the current version of the system configuration data 2735.i.” (Para. [0380]) where “Rather than necessitating global coordination and/or single entity responsible for assignment and sharing of data ownership information as new versions are generated over time, each new version of the data ownership information of a particular storage cluster 35 can be generated via a consensus protocol, which can be executed by some or all nodes 37 in a storage cluster participating in the consensus protocol, where the shared state mediated via the consensus protocol indicates the most updated ownership information. This mechanism improves database systems by guaranteeing consistency of data ownership information across nodes for usage in queries while not requiring global coordination.” (Para. [0603]).
Alluboyina et al. (U.S. Patent No. 11,108,638) teaches deployment of a network service pipeline may be automated by defining workflows comprising functions of instances of elements. Workflows may be defined in a graphical user interface including menus for the selection of elements, functions, and predefined workflows. A workflow may be dynamic such that addition or modification of a function invokes a trigger that automatically populates or modifies parameters of the functions of the workflow. Elements may each have a same set of functions that may be invoked by an orchestrator to perform automated implementation of the workflow. Functions of a workflow may be implemented in batches and may retrieve executable data from a distributed file store. A test platform with hardware and network simulation may be used to develop functions and workflows.
Behne (U.S. Pre-Grant Publication NO. 2013/0080462) teaches instructions to receive, during a first portion of an execution of a main program including a database query program and based on a first configuration for monitoring the database query program, a parameter value representing performance of execution of the database query program. The instructions can include instructions to produce an indicator that a performance condition has been satisfied based, at least in part, on the parameter value, and instructions to trigger execution of a second configuration for monitoring the database query program during a second portion of the execution of the main program in response to the performance condition being satisfied.The reference further teaches “Monitoring of the database query program is terminated during the execution cycle of the main program based on a parameter value related to the database query program satisfying a performance condition (block 530). In some embodiments, parameter value can be a parameter value representing performance of execution of the database query program and can be received by, for example, the performance parameter value collector 122 shown in FIG. 1. In some embodiments, the termination of the monitoring can be triggered by, for example, the monitoring configuration manager 140 shown in FIG. 1.” (Para. [0080]).
Chang et al. (U.S. Pre-Grant Publication No. 2010/0094988) teaches techniques for monitoring information. In response to a database process starting, a monitoring agent is loaded under control of the database process, wherein the monitoring agent invokes a discovery service to discover a central server and monitoring service. Under control of the monitoring agent, monitor information about the database process is sent to the central server and monitoring service.The reference further teaches “Event based information captures state information specific to when particular events occur in the deployment system 100. A database system 184 (coupled to the deployment network 190) may include one or more databases 186, and the database process 110 may communicate with the databases 186. In the database system 184, events may include opening/closing of connections, start/end of transactions, statement executions, exceptions, etc. Each event may contain different detail information. For example event information for statement executions may include start timestamp, driver time, network time, server time, and number of round trips, etc. Events can even be triggered when particular statistics exceed a defined threshold.” (Para. [0065])
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ROBERT F MAY whose telephone number is (571)272-3195. The examiner can normally be reached Monday-Friday 9:30am to 6pm.
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, Boris Gorney can be reached on 571-270-5626. 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.
/ROBERT F MAY/Examiner, Art Unit 2154 4/13/2026
/BORIS GORNEY/Supervisory Patent Examiner, Art Unit 2154