12c的alter table richard.oracle inmemory其實就是把錶放到乙個單獨的記憶體空間,而儲存的方式是列儲存
inmemory可以針對如下級別進行操作
column
table
materialized view
tablespace
partition
inmemory資料庫引數
inmemory_size 指定im分配記憶體大小,預設值為0,如果啟動該值最小為100m;如果在cdb環境中使用,cdb級別設定為整個庫級別限制,pdb預設繼承cdb設定,但是在實際使用中pdb中總數不能超過cdb限制
inmemory_force 指定是否允許資料庫中物件使用im,預設是default,即可以實現在物件級別定義inmemory or no inmemory,如果設定為off 即表示表或者物化檢視無法使用im
inmemory_clause_default 預設為空,和no inmemory意義相同,表示建立新物件預設不啟用im,如果配置為inmemory,表示新建立物件預設啟用im
inmemory_query 預設為true,表示查詢是否使用im特性,設定為false表示查詢不使用im特性
inmemory_max_populate_servers 預設和系統core一致,用途是把你的表中資料寫入到im中
inmemory_trickle_repopulate_servers_percent 控制im中物件資料的重新載入的程序數,該值為inmemory_max_populate_servers引數的百分比
optimizer_inmemory_aware 該引數是控制優化器成本計算時是否考慮im,預設為true
inmemory有壓縮級別和優先級別請參考官方文件
參考語句
alter
tablespace richard
default
inmemory
memcompress
for
capacity high
priority low;
對於inmemory有幾個需要注意的地方
1什麼樣的表或分割槽(物件)應該inmemory(這涉及列儲存相對於行儲存的優勢),好的技術關鍵還是看怎麼用
需要放inmemory的
不需要放inmemory的
queries with complex predicates
queries that select a large number of columns
queries that return a large number of rows
queries with multiple large table joins
2物件在inmemory占用多少記憶體評估,當然可能需要考慮資料量的持續增長
可以使用dbms_compression.get_compression_ratio評估
隨著im中物件的增加,當inmemory_size不足之時,當im中的物件不能全部在im中之時,對其物件操作,會轉換成傳統資料庫操作
3關於priority引數測試
a. 指定priority不為none也需要訪問物件後才能夠放入im中
b. 當im不足時,priority級別高的會把級別低的物件刷出im
4對於inmemory物件可以設定壓縮引數,請選用最合理的那個
例如alter
table
richard.oracle inmemory memcompress
for
query high
5對於rac,需要保證2個引數的設定正確才是真正的開啟inmemory
sql>
alter
system
set
parallel_force_local=
false
sid=
'*'
;
sql>
alter
system
set
parallel_degree_policy=auto sid=
'*'
;
資料**
五分鐘精通Oracle Hints
出處 在向大家詳細介紹oracle hints之前,首先讓大家了解下oracle hints是什麼,然後全面介紹oracle hints,希望對大家有用。基於代價的優化器是很聰明的,在絕大多數情況下它會選擇正確的優化器,減輕了dba的負擔。但有時它也聰明反被聰明誤,選擇了很差的執行計畫,使某個語句的...
5分鐘精通預留例項購買選項和屬性
當我們的企業開始採用雲服務時不僅僅面臨的是技術革新,它還很有可能改變原組織的運作方式。當企業由原定期發生的投資it資源,轉變為 與資源有效利用密切相關時,了解驅動雲定價的因素和成本優化策略知識是非常值得的,它將會為我們的企業節省大量的成本支出。目前雖然有很多企業已經上了雲 在用雲,但是重視aws成本...
5分鐘弄懂Docker
儘管之前久聞docker的大名了,但是天資愚鈍,對其到底是個啥東西一直摸不清,最近花了一段時間整理了一下,算是整理出一點頭緒來。官網的介紹是這樣的 那麼應用容器長什麼樣子呢,乙個做好的應用容器長得就好像乙個裝好了一組特定應用的虛擬機器一樣。比如我現在想用mysql那我就找個裝好mysql的容器,執行...