Cursor Loop Optimization via Custom Aggregate Functions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Cursor loops in relational database systems incur performance degradation due to materialization of query results on disk, interpreted SQL code execution, and network overhead, leading to inefficiencies in resource consumption and concurrency.

Innovation Solution

The Aggify technique automatically generates custom aggregate functions semantically equivalent to cursor loops, rewriting the query to use these aggregates, thereby eliminating the loop and leveraging set-oriented operations for improved performance and resource management.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If cursor loops are used to iterate over SQL query results, then ease of operation is improved, but productivity deteriorates due to performance degradation and resource consumption

Engineering Contradiction:
Improveease of operationVSAvoidproductivity
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent replaces the mechanical cursor loop iteration mechanism with a declarative SQL query that uses custom aggregate functions. Instead of manually iterating through rows with FETCH and loop constructs, the system automatically executes set-oriented aggregate operations that process all data in parallel, eliminating the performance overhead of row-by-row processing while preserving the intended computational logic.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent transforms the execution model by changing from iterative row processing to set-oriented batch processing. This parameter change in the processing mode allows the system to leverage optimized aggregate function execution paths that operate on entire result sets simultaneously, dramatically improving productivity while maintaining ease of use through automatic transformation of the original cursor loop code.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If cursor loops materialize query results on disk, then reliability is improved, but loss of energy increases due to I/O overhead

Engineering Contradiction:
ImprovereliabilityVSAvoidloss of energy
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent extracts the unnecessary materialization step from the query execution process. Instead of fetching all results into client memory or disk storage before processing, the system pushes the aggregate computation down to the database server where it can operate directly on the result sets using efficient set-oriented operations, eliminating wasteful I/O while ensuring reliable results through proper server-side resource management.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent changes the dimension of data processing from one-dimensional row-by-row iteration to multi-dimensional set-oriented operations. By operating on entire result sets as unified structures rather than individual rows, the system avoids materialization overhead and energy-wasting I/O operations while maintaining computational reliability through the database engine's optimized execution plans.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Adaptability or versatility

If cursor loops are used for data processing, then adaptability is improved, but productivity deteriorates due to network overhead and concurrency limitations

Engineering Contradiction:
ImproveadaptabilityVSAvoidproductivity
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent replaces the network-intensive cursor loop mechanism with server-side aggregate function execution. Instead of transferring individual rows over the network for client-side processing, the system executes the computational logic directly on the database server using optimized aggregate operations, eliminating network overhead and enabling high-concurrency processing that maintains adaptability for various query patterns.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent creates a universal solution that handles multiple query patterns and data processing scenarios through a single transformation mechanism. The custom aggregate function approach can replace various types of cursor loops across different applications and workloads, providing broad adaptability while consistently delivering productivity improvements through set-oriented processing and eliminated network round-trips.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11941001B2Optimizing cursor loops in relational database systems using custom aggregates
Publication Date: 2024.03.26 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11941001B2 patent drawing
  • US11941001B2 patent drawing
  • US11941001B2 patent drawing

AI summary

Methods and systems are provided for converting a loop (e.g., a cursor loop) to a declarative Structured Query Language (SQL) query that invokes a custom aggregate function. The loop includes a select query and a loop body that includes a program fragment that can be evaluated over a result set of the select query one row at a time. The system verifies that the loop body does not modify a persistent state of the database. A custom aggregate function that expresses the loop body is automatically constructed according to a contract. An aggregate class comprising aggregation methods of the contract are used to construct the aggregate function based on results of static analysis. The select query is automatically rewritten to form a declarative SQL query that invokes the custom aggregate function. The declarative SQL query may be executed by a database management system (DBMS) SQL server.