Database Object Memory Allocation Based on Live Range
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing database technologies do not provide adequate explicit memory allocation and deallocation control for database objects, leading to performance degradation and unnecessary computing resource consumption, especially in distributed computing contexts where database objects are arbitrarily swept into and out of memory.
Innovation Solution
Implementing explicit memory allocation and deallocation control for database objects based on their live range and availability, using techniques such as modified linear scan or color graph algorithms to ensure database objects remain in memory during pending operations, thereby reducing I/O costs and improving network latency and CPU utilization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If database objects are arbitrarily swept into and out of memory without explicit control, then memory is freed for other uses, but performance degrades and I/O operations increase
Solution Approach 1:
The system performs preliminary actions by allocating memory to database objects before they are needed and deallocating them after their live range expires. This proactive memory management ensures objects are readily available in memory when needed, preventing performance degradation from arbitrary sweeping while optimizing memory utilization.
Solution Approach 2:
The patent implements dynamic memory allocation and deallocation based on the live range of database objects. Memory is allocated when objects enter their live range and deallocated when they exit, creating a dynamic adaptation to actual memory needs rather than static allocation, thereby improving both performance and resource efficiency.
2Productivity
If database objects are kept in memory for extended periods, then I/O operations are reduced, but memory utilization decreases
Solution Approach 1:
Memory is allocated to database objects in advance based on their computed live range, ensuring they are available before needed without keeping them indefinitely. This preliminary allocation reduces I/O operations by having data ready when needed while allowing timely deallocation to free memory for other uses.
Solution Approach 2:
The system changes the memory management parameter from arbitrary sweeping to controlled allocation/deallocation based on live range parameters. This parameter change optimizes the balance between keeping objects in memory (reducing I/O) and freeing memory (improving utilization) by precisely controlling object lifetime in memory.
3Productivity
If explicit memory allocation and deallocation control is implemented, then performance and memory utilization are optimized, but system complexity increases
Solution Approach 1:
The system performs self-service by automatically computing live ranges and managing memory allocation/deallocation without manual intervention. The database system itself determines when objects should be allocated and deallocated based on their usage patterns, reducing the complexity burden on users while maintaining optimized performance.
Solution Approach 2:
The patent implements feedback mechanisms by tracking database object usage and live ranges to inform memory allocation decisions. This feedback loop allows the system to adaptively manage memory based on actual object lifetimes and usage patterns, optimizing performance while managing complexity through data-driven decisions.
Data Source
AI summary
A database object used in a plurality of database operations is determined. A live range of the database object is computed. The computing of the live range includes determining occurrences of the database operations to the database object. Based at least in part on the live range of the database object, a memory is determined to be optimally assigned to store the database object based on at least one characteristic of the memory. A first time to allocate the database object to the memory is determined. A second time to deallocate the database object from the memory is determined. An output file comprising a first instruction to store the database object in the memory at the first time and a second instruction to deallocate the database object from the memory at the second time is written.


