oracle数据库删除索引的正确方式
有時候發現你之前創建的索引后來你用不上了,于是為了節省空間,降低優化器在選擇執行計劃時候的成本。我們會選擇刪除這個索引。
但是因為業務場景比較多,又不是所有代碼都是一個人寫的。所以直接drop索引可能導致意想不到的后果,ps,之前訂單表索引失效就是血的教訓,不過那次是由于沒有及時收集統計信息。但也充分證明了索引的重要性和嚴重影響。
所以如何正確的刪除你覺得不要用的索引,以客戶表客戶編碼索引為例
1.alter index IDX_BASEDATA_FCUSTNUMBERinvisible;--讓索引不可見,沒有實際刪除,但是優化器不會使用該索引
觀察生產環境兩三周吧。這個時間沒有標準啦
2.沒有影響。drop index IDX_BASEDATA_FCUSTNUMBER;--實際刪除
有影響。alterindex IDX_BASEDATA_FCUSTNUMBER visible;--讓索引可見,非常迅速且不會鎖表
問,為什么不直接drop發現有影響再重建。
答,重建可能導致鎖表或者鎖分區,影響系統并發,嚴重的可能導致應用停機
問,為什么不采用非獨占方式創建和刪除索引以免造成上述影響。
答:createindex online和dropindex online的確可以解決鎖表和避免造成長事務。但是使用也是有一些限制條件的。例如,使用online語法事務隔離級別要為(dirty read),online語法不鎖表其實是等待表操作,如果表在操作create index online就暫停等待。
————————————————
原文鏈接:https://blog.csdn.net/shengsummer/article/details/44095347
總結
以上是生活随笔為你收集整理的oracle数据库删除索引的正确方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓手机安装运行青龙面板
- 下一篇: HTML5 行业首款 3D 游戏及 VR