Skip to content
  • Mauritz Sundell's avatar
    455d1e09
    WL#12523 Poolification: limit query memory in Dbspj · 455d1e09
    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.
    455d1e09
    WL#12523 Poolification: limit query memory in Dbspj
    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.
Loading