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