SQLSERVER压缩数据文件的用处有多大
SQLSERVER壓縮數(shù)據(jù)文件的用處有多大
前奏:
前些天因?yàn)榭蛻裟沁叺膯栴}(其實(shí)是盜版問題),只能使用免費(fèi)的SQLSERVER EXPRESS版本
SQLSERVER2005 的express版本的SQLSERVER的整個數(shù)據(jù)庫的數(shù)據(jù)文件大小限制為4GB(SQLSERVER2012express版本限制是10G),就是說不管你用多少個文件組,多少個輔助數(shù)據(jù)文件ndf
所有加起來都不能超過4GB(mdf+ndf)
事務(wù)日志文件大小沒有限制
因?yàn)槲覀兊臄?shù)據(jù)庫只是使用了一個主數(shù)據(jù)文件GPOS.mdf和一個事務(wù)日志文件GPOS.ldf
?
本人的解決思路:
本人在想如果是這樣,到時候就收縮數(shù)據(jù)庫唄
在網(wǎng)上查了一下資料:由于DBCC SHRINKDATABASE一次運(yùn)行會同時影響所有的文件(包括數(shù)據(jù)文件和日志文件),使用者不能
指定每個文件的目標(biāo)大小,其結(jié)果可能不能達(dá)到預(yù)期的要求。所以建議先做好規(guī)劃,對每個文件確定預(yù)期目標(biāo),然后使用DBCC SHRINKFILE
來一個文件一個文件地做比較穩(wěn)妥
本來很開心的,網(wǎng)上資料都說使用DBCC SHRINKFILE來收縮文件,那這樣就不怕拉 (我不怕不怕拉~)
但是,往下看那個資料:
1、首先了解數(shù)據(jù)文件當(dāng)前的使用情況
收縮量的大小不可能超過當(dāng)前文件的空閑空間的大小。如果想要壓縮數(shù)據(jù)庫的大小,首先要確認(rèn)數(shù)據(jù)文件里的確有相應(yīng)未被使用的空間。如果空間都在
使用中,那就要確認(rèn)大量占用空間的對象(表格或索引)。然后通過歸檔歷史數(shù)據(jù),先把空間釋放出來
?
2、主數(shù)據(jù)文件(primary file)是不能被清空的。能被完全清空的只有輔助數(shù)據(jù)文件
?
3、如果要把一個文件組整個清空,要刪除分配在這個文件組上的對象(表格或索引),或者把他們移到其他文件組上。
DBCC SHRINKFILE不會幫你做這個工作
把數(shù)據(jù)文件里面數(shù)據(jù)和對象清除完、確認(rèn)數(shù)據(jù)文件(組)有足夠的空閑空間后,管理員就可以使用DBCC SHRINKFILE來縮小或清空指定文件了。
如果要縮小文件,就填上需要的target_size,如果要清空文件,就選擇EMPTYFILE
?
根據(jù)上面資料所說,本人的解決思路是:
1、確認(rèn)大量占用空間的對象(表格或索引)。然后通過歸檔歷史數(shù)據(jù),先把空間釋放出來再壓縮數(shù)據(jù)文件
2、重建索引,把一些數(shù)據(jù)頁面重排一次,原先的頁面被釋放,所占用的分區(qū)也被釋放,再去DBCC SHRINKFILE
如果你們有其他解決方法希望你們告訴我,謝謝您們了!!
?
總結(jié)
以上是生活随笔為你收集整理的SQLSERVER压缩数据文件的用处有多大的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Lync Server前端必备组件W
- 下一篇: SQL 注入经验