您好,登錄后才能下訂單哦!
小編給大家分享一下數據庫中大表刪除字段慢的原因有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
由于生產環境,用的是DG架構,因此在數據庫同事的協助下,利用DG備庫snapshot的功能,在生產環境,真實操作了一次,雖然和主庫操作,唯一不同的是,沒有請求的壓力,相當于停了應用,但還是能說明些問題。
整個刪除操作,執行時間,大約是30分鐘,通過10046的trace,看見等待事件,主要是下面這種,
這篇文章提到了這個錯誤,
https://blog.csdn.net/u011116642/article/details/51540314
有人還做了測試,
1. 將列置為unused
ALTER TABLE test1 SET UNUSED COLUMN Tablespace_name;
2. 刪除unused列
ALTER TABLE test1 DROP UNUSED COLUMN CHECKPOINT 5;
在未執行完畢前,用shutdown abort強制關閉數據庫(如果用shutdown immediate就看不到效果,它會等到執行完畢才會關閉數據庫)
3. 重新啟動數據庫,查看test1表,報錯,
4. 繼續刪除未刪完的列
ALTER TABLE test1 DROP COLUMNS continue
5. 執行完畢后再次查詢test1表,就OK了
2.可以嘗試邏輯刪除,然后再物理刪除,即線上置為unused,等維護窗口,再刪除這個字段,如下面這篇文章,
https://blog.csdn.net/caimaohua/article/details/4264040
3. 使用在線重定義,刪除字段,如下文章所介紹,
http://m.blog.itpub.net/17203031/viewspace-772500/
https://blog.csdn.net/qq_33879355/article/details/78578175
4. 如果有停機時間,可以采用CTAS重建表,間接刪除字段。
針對這個問題,我們采用的,算是第五種方法,即不動這字段,作為備份字段,未來新需求要增加字段,就直接改這字段,當然這是有些前提的,
1. 應用中對該字段的引用,需要刪除,例如insert操作,需要刪除這個字段名稱,否則就會出問題。
2. 新增字段的類型,要和這個字段類型兼容,比如這字段是VARCHAR2,新增字段需要DATE,自然不能直接改。
看完了這篇文章,相信你對“數據庫中大表刪除字段慢的原因有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。