SQL SERVER運維日記 收縮資料庫

2022-02-08 21:04:49 字數 1242 閱讀 6181

先檢查下,有沒有可以刪除的不用的檔案,結果都是重要的或者拿不準的。先收縮下資料庫吧,點選執行。等收縮完成就可以繼續去根hr妹妹聊天了。突然**座機和手機齊鳴,小王心裡一種不祥的預感呢?好像這個場景在**見過。。不會是資料庫阻塞了吧?? 手忙腳亂的先接起手機,因為來電顯示是某業務部門主管 「小王啊,,現在系統卡死了,全部不動了,是怎麼回事啊,你趕緊處理下」,,「恩,好的,我馬上檢查下」,然後又接起座機,是另外乙個部門的主管說報表看不了。慌忙應付完了,趕緊檢查資料庫執行中的語句。 果然資料庫產生大量的阻塞,,連帶資料庫伺服器的操作都變得好慢(是我的心理作用嗎?)。正準備先把收縮操作取消了,,**有同時響起了,,,唉,不管了,先處理問題。然後點選取消。經過漫長的等待,,終於完成了,然後打**跟各個部門解釋,,寫事故報告,,悲劇,,今天的午飯都不想吃了。

問題時,做到心中有數。

不到萬不得已,千萬不要收縮資料庫。收縮資料庫影響極大:

1.收縮資料庫對資料庫的影響極大,產生大量日誌和碎片,而且會鎖表。如果你的庫當前正在被使用,收縮不下去非常正常。

2.收縮資料庫一定要手工來做的,而且是在維護視窗期做的事。

3.盡量使用語句來執行,可以提示錯誤

在不得不收縮的時候,參考下面的步驟

1.找到資料庫中最大的幾個表,重建所有索引。首先嘗試指定truncate only收縮方式.它只是移除檔案尾部的空閒空間,並不重新組織已經使用的資料頁。

dbcc shrinkdatabase (adventureworks2012, truncateonly);
2 最後才考慮,不帶選項的收縮。收縮不要一次性全部收縮。 可以每次收縮2g左右。不要把空間可用空間全部收縮了,可以剩餘一部分比如4g。收縮完後,記得重建索引.

補充:還有一種辦法就是新建檔案組,使用create index ... with(drop_existing = on)on語法將所有相關的的表和索引移動到新檔案組。然後收縮舊的檔案組。

3.可在程序中的任一點停止 dbcc shrinkdatabase 操作,任何已完成的工作都將保留。

4. 不能在備份資料庫時收縮資料庫

1.你刪除了大量資料,而且資料不太可能增長。

2.要移除某個檔案時,你需要先清空資料檔案。

那我們處理磁碟空間不足的最好的辦法是什麼呢?最好的辦法是在最初規劃時,預估好未來一年或者二年的資料增長。給磁碟劃分足夠的空間。設定好資料庫的初始大小,並且將自動增長使用固定量增長。

SQL SERVER 運維日記 資料庫備份

昨天下午突然看到,爐石傳說 遊戲資料庫發生宕機並引發資料丟失事故的新聞。剛看到時,滿滿的不可思議。暴雪啊,網易啊。都是很牛叉的公司。他們出的遊戲我都是很喜歡的。當我看到,第一時間著手搶修,重啟伺服器,並嘗試資料恢復時,我的想法是他們的高可用方案呢?為什麼不馬上切換?當我看到相關備份資料庫也出現故障時...

SQLSERVER 運維日記 資料庫狀態

新年伊始,小夥伴是不是還處於假期綜合症的狀態。我們在日常運維資料庫的時候,會時常檢視資料庫的狀態,檢查資料庫是否正常執行。對於這些狀態的熟悉對於我們處理資料庫無法訪問的 問題非常重要。當資料庫突然變成乙個你沒有見到過的狀態時,你就會非常慌亂,手足無措。這裡給小夥伴普及下資料庫的各個狀態。已經他們是怎...

SQL SERVER 運維日記 資料庫備份

昨天下午突然看到,爐石傳說 遊戲資料庫發生宕機並引發資料丟失事故的新聞。剛看到時,滿滿的不可思議。暴雪啊,網易啊。都是很牛叉的公司。他們出的遊戲我都是很喜歡的。當我看到,第一時間著手搶修,重啟伺服器,並嘗試資料恢復時,我的想法是他們的高可用方案呢?為什麼不馬上切換?當我看到相關備份資料庫也出現故障時...