-
Mauritz Sundell authored
Problem ======= With the poolification of Dbtc, Dbtc and Dbspj compete over shared global pages. Dbspj using the query memory resource group and Dbtc using the transaction memory resource group. Dbspj serves join queries and "only" read data. A bad join query could easily consume a lot of memory. Dbtc on the other hand also serves writes, and typically memory consumption per request are more limited. In situations there there are small amount of free memory left one want Dbtc to be prioritized over Dbspj. Solution ======== Query memory is the only resource group that have no minimal amount of dedicated pages. Having no dedicated pages the resource group now will be treated with low priority, lower than resource groups having some dedicated pages. Allocating pages for a low priority resource group will be denied if there are less than 10% of non-dedicated pages free. TODO ==== Test case. Use up enough memory so that a query using Dbspj fail due to out of memory. Do a lot of transactions not using Dbspj demonstrating that there are enough memory free. Free memory so that there are the same amount of "low priority" pages as there were free "high priority" pages before. Rerun same query using Dbspj which now should succeed.
Mauritz Sundell authoredProblem ======= With the poolification of Dbtc, Dbtc and Dbspj compete over shared global pages. Dbspj using the query memory resource group and Dbtc using the transaction memory resource group. Dbspj serves join queries and "only" read data. A bad join query could easily consume a lot of memory. Dbtc on the other hand also serves writes, and typically memory consumption per request are more limited. In situations there there are small amount of free memory left one want Dbtc to be prioritized over Dbspj. Solution ======== Query memory is the only resource group that have no minimal amount of dedicated pages. Having no dedicated pages the resource group now will be treated with low priority, lower than resource groups having some dedicated pages. Allocating pages for a low priority resource group will be denied if there are less than 10% of non-dedicated pages free. TODO ==== Test case. Use up enough memory so that a query using Dbspj fail due to out of memory. Do a lot of transactions not using Dbspj demonstrating that there are enough memory free. Free memory so that there are the same amount of "low priority" pages as there were free "high priority" pages before. Rerun same query using Dbspj which now should succeed.
Loading