Proportional memory allocation algorithm
Original Publication Date: 2002-Sep-30
Included in the Prior Art Database: 2003-Jun-20
Historically, some database management systems (DBMS) have used a uniform memory allocation policy. This policy allocated memory uniformly across all concurrently executing operators regardless of these operators' actual memory requirements. With the uniform memory allocation policy, the total memory that had to be allocated to a plan to prevent overflow depended on the memory requirements of the single operator that required the most memory. Thus, if one operator required significantly more memory than the others, a great deal of memory might have been wasted simply to prevent the most memory intensive operator from overflowing. The new Proportional Memory Allocation (PMA) algorithm attempts to allocate to each operator the actual amount of memory required by that operator to avoid overflow. With the new algorithm, if one operator requires more memory than another, the server allocates more memory to the operator that can actually use the memory. This strategy increases memory utilization and improves query performance by decreasing the probability of overflow. The various steps in the algorithm are as follows: 1. Computation of Phases The server determines the maximum number of concurrent memory consuming operators in the plan that will execute at any one time and assigns the operators to phases. A phase is a group of adjacent operators that execute and consume memory simultaneously. Each operator belongs to a range of phases starting with the phase during which it is activated and ending with the phase during which it terminates.