oracle索引的並行

oracle索引的並行

收到一則告警:

In DB index or table:[IDX_PAYMENT_VOUCHER] find parallel , Owner:[CC] ;please rebuild or re-create the object.

和oracle的索引相關的,發現了並行,檢查發現這個表的並行為3.

select degree from dba_indexes where index_name=IDX_PAYMENT_VOUCHER;

建索引時,我們為了建索引快,會加上並行,加上並行之後,此列索引就會是並行了。訪問有並行度的索引時,CBO可能可能會考慮並行執行,這可能會引發一些問題,如在伺服器資源緊張的時候用並行會引起更加嚴重的爭用。當使用並行後,需要把並行度改回來。

alter index IDX_PAYMENT_VOUCHER noparallel;

創建索引時候開並行建議使用下列方法:

方法A:create index idx_object_id on t(object_id) parallel 8; --不科學、有隱患 方法B:create /+*parallel(5)*/ index idx_object_id on t(object_id); --建議採用 方法C:create /+*parallel 5 */ index idx_object_id on t(object_id); --效率低下

以上是三種索引並行用法,區別是什麼呢?

方法A創建方法本身不科學,它會修改索引本身並行度,導致執行計劃中產生PX並行操作,切記在OLTP系統中不要這樣使用,很容易引發性能故障。

方法B條是通過hint使用並行,效果相對而言比較高效。

方法C不僅不能提高效率,反而執行特別慢。


推薦閱讀:

每次登錄mysql都報:無能通過 '/var/lib/mysql/mysql.sock' 登錄
AWS 是怎麼改寫 MySQL 的?
Mysql常用操作總結(下)
MySQL速覽
分散式系統架構實戰--簡易版支付系統怎麼部署?

TAG:資料庫 | MySQL | Oracle錯誤 |