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...