DML並行度限制

2021-06-19 03:42:56 字數 1764 閱讀 6767

dml語句限制:

1.如果dml語句用到並行度,那無論是hint還是直接在表上設定並行度,都必須要設定alter session enable parallel dml;的這步操作是必不可少的!

2.如果並行的表更新未提交,在此基礎上做任何操作無論更新還是查詢都會失敗,因此並行度的表其實還是有危險性的。從這裡至少得出乙個結論,如果應用是多表分別插入帶並行度的表,並且是有事務性,需要最後一起提交的,這個應用一定會失敗!所以盡量避免把錶本身的屬性設定為並行,這樣的話會留下隱患,還是建議應用如果一定要用並行度,用hint做設定就好了,因此最好最後要做如下操作

sql> alter table ljb_parallel noparallel;

table altered

3.另外如果表中只是索引有並行度,並不存在錶帶並行度的問題,不提交繼續操作是不會報錯的。

sql> insert into ljb_test select /*+parallel(a,4)*/ * from ljb_test a;

3.並行語句無論是ddl還是dml還是查詢並行,三個方式都會用到排序,如果使用者pga設定不夠大,sort_area_size區不足,或者是使用者資料量過於龐大,或者說執行並行操作的次數過多,完全可能會導致大的排序動作,有可能出現大量排序在臨時表空間中進行,速度越來越慢,甚至出現臨時表空間不夠的錯誤!最後還發現,如果並行插入的時候,需要維護索引,那排序數量又會比無索引的情況大大增加許多!

1、需要進行排序的操作:

a、建立索引及重建索引;

b、涉及到索引維護的並行插入

c、order by或者group by(盡可能對索引字段排序)

d、distinct

e、union all/intersect/minus

f、sort-merge join

g、analyze命令(僅可能使用estamate而不是compute)

2、診斷及措施

select * from v$sysstat where name like 『%sort%』;

sort(disk):要求io去臨時表空間的排序數目

sort(memory):完全在memory中完成的排序數目

sort(rows):被排序的行數合計

sort(disk)/ sort(memory)<5%,如果超過5%,增加sort_area_size的值。

select disk.value disk,mem.value mem,(disk.value/mem.value)*100 ratio from v$sysstat disk,v$sysstat mem where mem.name=』sorts (memory)』 and disk.name=』sorts (disk)』;

--查詢索引的並行度

sql> select table_name,index_name,degree from user_indexes where table_name='ljb_parallel';

table_name index_name degree

ljb_parallel idx_ljb_parallel 1

--查詢表的並行度設定

sql> alter index idx_ljb_parallel parallel 4;

index altered

sql> select table_name,index_name,degree from user_indexes where table_name='ljb_parallel';

table_name index_name degree

maptask的並行度

maptask的並行度決定map階段的任務處理併發數量。進而影響到整個job的處理速度。maptask的並行度是不是越多越好?並行度又是如何決定的?先說maptask的並行度是如何決定的.乙個job的map階段的並行度由客戶端提交job時決定。而客戶端對map階段並行度規劃的邏輯為 將待處理的資料進...

修改Oracle並行度

什麼是並行度 並行度的優點就是能夠最大限度的利用機器的多個cpu資源,是多個cpu同時工作,從而達到提高資料庫工作效率的目的。在系統空閒時間,使用並行是個不錯的選擇,但是好東西總是相對而言,沒有絕對的好壞,不當的使用,同樣會引起資料庫的新的問題產生。1 檢視並行度 select table name...

streaming 並行度設定

sparkstreaming並行度屬性設定 spark.streaming.blockinterval 該屬性是對batchinterval的進一步細化切分。將乙個batchinterval的資料喜歡切分成更小的block,乙個block對應乙個spark partition。batchinterv...