SQLSERVER壓縮資料檔案的用處有多大

來源:互聯網
上載者:User
SQLSERVER壓縮資料檔案的用處有多大

前奏:

前些天因為客戶那邊的問題(其實是盜版問題),只能使用免費的SQLSERVER EXPRESS版本

express版本的SQLSERVER的整個資料庫的資料檔案大小限制為4GB,就是說不管你用多少個檔案組,多少個輔助資料檔案ndf

所有加起來都不能超過4GB(mdf+ndf)

交易記錄檔大小沒有限制

因為我們的資料庫只是使用了一個主要資料檔案GPOS.mdf和一個交易記錄檔GPOS.ldf

 

本人的解決思路:

本人在想如果是這樣,到時候就收縮資料庫唄

在網上查了一下資料:由於DBCC SHRINKDATABASE一次運行會同時影響所有的檔案(包括資料檔案和記錄檔),使用者不能

指定每個檔案的目標大小,其結果可能不能達到預期的要求。所以建議先做好規劃,對每個檔案確定預期目標,然後使用DBCC SHRINKFILE

來一個檔案一個檔案地做比較穩妥

本來很開心的,網上資料都說使用DBCC SHRINKFILE來收縮檔案,那這樣就不怕拉 (我不怕不怕拉~)

但是,往下看那個資料:

1、首先瞭解資料檔案當前的使用方式

收縮量的大小不可能超過當前檔案的空閑空間的大小。如果想要壓縮資料庫的大小,首先要確認資料檔案裡的確有相應未被使用的空間。如果空間都在

使用中,那就要確認大量佔用空間的對象(表格或索引)。然後通過歸檔曆史資料,先把空間釋放出來

 

2、主要資料檔案(primary file)是不能被清空的。能被完全清空的只有輔助資料檔案

 

3、如果要把一個檔案組整個清空,要刪除分配在這個檔案組上的對象(表格或索引),或者把他們移到其他檔案組上。
DBCC SHRINKFILE不會幫你做這個工作

把資料檔案裡面資料和對象清除完、確認資料檔案(組)有足夠的空閑空間後,管理員就可以使用DBCC SHRINKFILE來縮小或清空指定檔案了。

如果要縮小檔案,就填上需要的target_size,如果要清空檔案,就選擇EMPTYFILE

 

根據上面資料所說,本人的解決思路是:

1、確認大量佔用空間的對象(表格或索引)。然後通過歸檔曆史資料,先把空間釋放出來再壓縮資料檔案

2、重建索引,把一些資料頁面重排一次,原先的頁面被釋放,所佔用的分區也被釋放,再去DBCC SHRINKFILE

如果你們有其他解決方案希望你們告訴我,謝謝您們了!!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.