關(guān)于insert /*+ append */我們需要注意以下三點(diǎn): a、非歸檔模式下,只需append就能大量減少redo的產(chǎn)生;歸檔模式下,只有append+nologging才能大量減少redo。 b、insert /*+ append */時(shí)會(huì)對(duì)表加鎖(排它鎖),會(huì)阻塞表上的除了select以外所有DML語(yǔ)句;傳統(tǒng)
關(guān)于insert /*+ append */我們需要注意以下三點(diǎn):
a、非歸檔模式下,只需append就能大量減少redo的產(chǎn)生;歸檔模式下,只有append+nologging才能大量減少redo。
b、insert /*+ append */?時(shí)會(huì)對(duì)表加鎖(排它鎖),會(huì)阻塞表上的除了select以外所有DML語(yǔ)句;傳統(tǒng)的DML在TM enqueue上使用模式3(row exclusive),其允許其他DML在相同的模式上獲得TM enqueue。但是直接路徑加載在TM enqueue使用模式6(exclusive),這使其他DML在直接路徑加載期間將被阻塞。
c、insert /*+ append */?直接路徑加載,速度比常規(guī)加載方式快。因?yàn)槭菑腍WM的位置開(kāi)始插入,也許會(huì)造成空間浪費(fèi)。
1.環(huán)境介紹
數(shù)據(jù)庫(kù)版本:
1 2 3 4 5 6 7 8 |
|
網(wǎng)上說(shuō)測(cè)試時(shí)不要使用auto trace來(lái)查看redo size,這個(gè)值是有偏差的.建議建立一個(gè)視圖:
1 2 3 4 5 6 |
|
2.示例演示:
2.1 非歸檔模式
1 2 3 4 5 6 |
|
2.1.1 nologging表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
2.1.2 logging表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
2.2歸檔模式下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
2.2.1 nologging表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
2.2.2 logging表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
在歸檔模式下,對(duì)于常規(guī)表的insert append產(chǎn)生和insert同樣的redo
此時(shí)的insert append實(shí)際上并不會(huì)有性能提高.
但是此時(shí)的append是生效了的。
3.insert /*+ append */會(huì)阻塞除select以外的DML語(yǔ)句,direct-path insert操作是單獨(dú)一個(gè)事務(wù)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
另外開(kāi)啟一個(gè)會(huì)話,就會(huì)發(fā)現(xiàn)只能select,其他DML全部阻塞。
?
本文摘自 :https://blog.51cto.com/u