本篇文章對DB In-Memory涉及到的參數進行介紹:
首先看一下DB In-Memory相關的所有參數:
SQL> show parameter INMEMORY
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
inmemory_clause_default string
inmemory_force string DEFAULT
inmemory_max_populate_servers integer 1
inmemory_query string ENABLE
inmemory_size big integer 1G
inmemory_trickle_repopulate_servers_ integer 1
percent
optimizer_inmemory_aware boolean TRUE
1.INMEMORY_SIZE參數:
這個參數控制了SGA中In-Memory Area的大小。預設值為0,代表DB In-Memory功能不啟用。如果要啟用DB In-Memory功能需要将這個值置為非0且必須大于100M的值。
在多租戶環境中,如果在CDB級别下對于該參數的設定代表了整個CDB的In-Memory Area的大小。同時這個參數也可以在每個PDB下進行設定,對于所有PDB設定的值的和可以小于、等于或大于整個CDB的設定,但是CDB的INMEMORY_SIZE的值是包括CDB$ROOT和所有PDB可以使用的值的上限。在預設情況下PDB的INMEMORY_SIZE的值和CDB下參數值大小相同,代表改PDB可以使用所有CDB下的In-Memory Area。
2.INMEMORY_FORCE參數:
這個參數用來控制是否允許表和物化視圖使用In-Memory store。
預設值為DEFAULT,代表可以實作在對象級别設定INMEMORY和NO INMEMORY。
如果設定為OFF,代表表和物化視圖無法使用In-Memory。
3.INMEMORY_QUERY參數:
這個參數用來控制是否允許In-Memory查詢,預設為ENABLE。預設值代表查詢可以通路存儲在In-Memory中的資料庫對象,該參數還可以設定為DISABLE來禁止通路In-Memory中存儲的資料庫對象。
4.INMEMORY_CLAUSE_DEFAULT參數:
這個參數用來對新表和新物化視圖指定一個預設的In-Memory設定。
該參數預設設定為空,代表對于新表和新的物化視圖預設不啟用In-Memory,效果等同于設定該值為NO INMEMORY。
如果指定了改參數為INMEMORY,則新建立的表和物化視圖在建立時如果沒有指定INMEMORY條件,則預設對該表或物化視圖啟用In-Memory。隻對該參數設定後建立的表和物化視圖生效。
5.INMEMORY_MAX_POPULATE_SERVERS
該參數控制了背景負責将資料庫對象放入到In-Memory column store的server數量,預設為系統的core的數量。該參數根據系統負載情況進行調整,防止系統過載。
6.INMEMORY_OPTIMIZER_AWARE
該參數控制了資料庫優化器在計算cost時是否考慮In-Memory。預設為TRUE,即考慮。在設定為FALSE時,優化器在對SQL語句進行優化時将忽略In-Memory的性能。
7.INMEMORY_TRICKLE_POPULATE_SERVERS_PERCENT
該參數控制了對于In-Memory column store中的資料進行重新載入時最多允許的載入程序占總載入程序的比例,比如INMEMORY_MAX_POPULATE_SERVERS設定為10,INMEMORY_TRICKLE_POPULATE_SERVERS_PERCENT設定為10,則最多用于重新載入的servers數量為10*10%=1。