SQLServer數據庫收縮相關知識筆記

1、為什么要進行數據庫收縮?

SQL Server 數據庫采取預先分配空間的方法來建立數據庫的數據文件或者日志文件,比如數據文件的空間分配了300MB,而實際上只占用了20MB空間,這樣就會造成磁盤存儲空間的浪費。可以通過數據庫收縮技術對數據庫中的每個文件進行收縮,刪除已經分配但沒有使用的頁。從而節省服務器的存儲的成本。

2、數據庫收縮的原理

官方解釋:收縮數據文件通過將數據頁從文件末尾移動到更靠近文件開頭的未占用的空間來恢復空間。在文件末尾創建足夠的可用空間后,可以取消對文件末尾的數據頁的分配并將它們返回給文件系統。

3、數據庫收縮的限制和局限

收縮后的數據庫不能小于數據庫最初創建時指定的大小。 或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)設置的顯式大小。

比如:如果數據庫最初創建時的大小為 10 MB,后來增長到 100 MB,則該數據庫最小只能收縮到 10 MB,即使已經刪除數據庫的所有數據也是如此。

不能在備份數據庫時收縮數據庫。 反之,也不能在數據庫執行收縮操作時備份數據庫。

4、數據庫收縮的方式

4.1 收縮數據庫 DBCC SHRINKDATABASE

介紹:收縮指定數據庫中的數據文件大小。

語法格式:

DBCC SHRINKDATABASE( database_name [ , target_percent ][ , { NOTRUNCATE | TRUNCATEONLY } ] 
)

參數說明:

  • database_name:是要收縮的數據庫名稱

  • target_percent:是數據庫收縮后的數據庫文件中所要的剩余可用空間百分比。

  • NOTRUNCATE:導致在數據庫文件中保留所釋放的文件空間。如果未指定,將所釋放的文件空間釋放給操作系統。

  • TRUNCATEONLY:導致將數據文件中的任何未使用的空間釋放給操作系統,并將文件收縮到上一次所分配的大小,從而減少文件大小,而不移動任何數據。不試圖重新定位未分配頁的行。使用 TRUNCATEONLY 時,忽略 target_percentis。

4.2 收縮數據庫文件 DBCC SHRINKFILE

介紹:收縮當前數據庫的指定數據或日志文件的大小,或通過將數據從指定的文件移動到相同文件組中的其他文件來清空文件,以允許從數據庫中刪除該文件。文件大小可以收縮到比創建該文件時所指定的大小更小。這樣會將最小文件大小重置為新值。

語法格式:

DBCC SHRINKFILE 
({ file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]}
)
[ WITH NO_INFOMSGS ]

參數說明:

  • file_name:要收縮的文件的邏輯名稱。

  • file_id:要收縮的文件的標識 (ID) 號。若要獲得文件 ID,請使用 FILE_IDEX 系統函數,或查詢當前數據庫中的 sys.database_files 目錄視圖

  • target_size:用兆字節表示的文件大小(用整數表示)。如果未指定,則 DBCC SHRINKFILE 將文件大小減少到默認文件大小。默認大小為創建文件時指定的大小。

  • 注意:可以使用 DBCC SHRINKFILE target_size 減小空文件的默認大小。

例如,如果創建一個10MB 的文件,然后在文件仍然為空的時候將文件收縮為2 MB,默認文件大小將設置為2 MB。這只適用于永遠不會包含數據的空文件。

  • EMPTYFILE:將指定文件中的所有數據遷移到同一文件組中的其他文件。由于數據庫引擎不再允許將數據放在空文件內,因此可以使用 ALTER DATABASE 語句來刪除該文件。

  • NOTRUNCATE:在指定或不指定 target_percent 的情況下,將已分配的頁從數據文件的末尾移動到該文件前面未分配頁。文件末尾的可用空間不會返回給操作系統,文件的物理大小也不會更改。因此,指定 NOTRUNCATE 時,文件看起來未收縮。

  • NOTRUNCATE 只適用于數據文件。日志文件不受影響。

  • TRUNCATEONLY:將文件末尾的所有可用空間釋放給操作系統,但不在文件內部執行任何頁移動。數據文件只收縮到最后分配的區。如果隨 TRUNCATEONLY 指定了 target_size,則會忽略該參數。TRUNCATEONLY 只適用于數據文件。

  • WITH NO_INFOMSGS:取消顯示所有信息性消息。

5、示例

-- 將TestDB數據庫中的TestDB文件的大小收縮到20MB。
USE TestDB ;
GO
DBCC SHRINKFILE (TestDB, 20) ;
-- 將減小 UserDB 用戶數據庫中數據文件和日志文件的大小,
-- 以便在數據庫中留出 10% 的可用空間
DBCC SHRINKDATABASE (TestDB, 30); 
-- 清理數據庫日志文件為2M
USE master
ALTER DATABASE TestDB SET RECOVERY SIMPLE WITH NO_WAIT
ALTER DATABASE TestDB SET RECOVERY SIMPLE --簡單模式
USE TestDB
DBCC SHRINKFILE (N'TestDB_log' , 2, TRUNCATEONLY)--設置壓縮后的日志大小為2M,可以自行指定
USE master
ALTER DATABASE TestDB SET RECOVERY FULL WITH NO_WAIT
ALTER DATABASE TestDB SET RECOVERY FULL --還原為完全模式

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270819.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270819.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270819.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

libvirt vnc花屏_centos6.5下VNC花屏解決方法

問題描述1、FusionCompute平臺搭建完成后,創建基于RHEL6.5 64bit版本的虛擬機,完成虛擬機初始安裝后,VNC界面出現花屏,無法登入Redhat桌面系統2、在創建虛擬機時,系統安裝向導配置了網絡,在花屏界面下可以通…

enum操作--獲取枚舉里的最大值

一個應用系統,如果程序里沒有任何enum的使用,我認為它的可讀性是有待商榷的。 求枚舉里的最大/最小枚舉值, 其實是對Array進行操作: enum EnumTest{ddd 2,eee} var arr1 Enum.GetValues(typeof(EnumTest)); //返回值是一個Array…

呂梁離石學校計算機專業在哪里,山西呂梁計算機大專學校有哪些太重技校告訴您...

山西呂梁計算機大專學校有哪些太重技校告訴您。選擇專業的***關鍵的因素是你自身的興趣,其他只能參考,如果你能準確的知道自己的興趣所在,未來的職業所選,那么只需要一招就可以吃遍天。相信我,一生為自己感興趣的事情奮…

網絡安全:六種常見的網絡攻擊手段

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

3種團隊分組適應項目_分組團隊競賽活動方案

為營造新年春節期間良好的經營氛圍,形成規范有效的服務流程,促進員工快樂積極向上工作,鑄造峽市娛樂行業名牌,經KTV 管理人員研究制定以下分組評比競賽方案:第一:分組辦法。1、KTV主管楊海軍、華磊、馮磊、…

Spring Security(18)——Jsp標簽

目錄 1.1 authorize 1.2 authentication 1.3 accesscontrollist Spring Security也有對Jsp標簽的支持的標簽庫。其中一共定義了三個標簽:authorize、authentication和accesscontrollist。其中authentication標簽是用來代表當前Authentication對象的&…

e4a html文本,E4A?怎么將剪貼版中的文本?粘貼到窗口的光標處啊?求個代碼

滿意答案百幻蝶V木桃2017.05.20采納率:49% 等級:8已幫助:1710人■如何打開剪貼板查看器 當您從某個程序剪切或復制信息時,該信息會被移動到剪貼板并保留在那里,直到您清除剪貼板或者您剪切或復制了另一片信息。“剪…

電腦技巧:七款U盤修復軟件

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

cdrx8如何批量導出jpg_Coreldraw/CDR X8 存低版本打開問題 – 數碼打印破圖 – Coreldraw/CDR軟件崩潰 – 漸變導位圖角度變了...

Coreldraw/CDR X8 存低版本打開問題 – 數碼打印破圖 – Coreldraw/CDR軟件崩潰 – 漸變導位圖角度變了Coreldraw/CDR X8 存低版本打開問題各位大神,小弟最近安裝了Coreldraw/CDR X8 ,在設計文件時,會遇到給文字設計套白邊,問題來…

[deviceone開發]-do_SlideListView的簡單示例

一、簡介 利用提供的SlideListVIew實現那種cell可以滑動露出底部按鈕的功能 主要組件:do_slidelistview 二、效果圖 三、相關討論 http://bbs.deviceone.net/forum.php?modviewthread&tid269 四、相關下載 https://github.com/do-project/code4do/tree/master/…

Git:Rebase和Merge之間的區別,看完這篇文章你就懂了!

社區中長期以來一直在爭論我們應該使用Merge還是Rebase。有人會說Merge更好,因為它保留了最完整的工作歷史。其他人則認為,Rebase變得更整潔,這使審閱者的生活更輕松,更高效。本文將解釋合并和重新設置之間的區別是什么&#xff0…

計算機b級英語翻譯,英語B級考試翻譯必備常用短句

英語B級考試翻譯必備常用短句1. Who would say like this?誰會這樣說呢?2. What time shall we leave?我們什么時候出發呢?3. We are going to play golf this Sunday.我們這個星期天要去打高爾夫球。4. Do you want to go out or stay at home?你想出…

weblogic概覽下的上下文根配置_Weblogic服務下獲取上下文路勁問題

問題描述:如果一個項目用weblogic部署的服務,在web_inf文件夾下只有web.xml文件,沒有配置weblogic.xml文件時,這是用類.class.getClassLoader().getResource("").getPath() 該方法獲取到的絕對路勁是如下:/…

干貨:SQLServer數據庫基于PowerDesigner逆向工程生成PDM文件

在日常的開發工程中,很多時候需要提供數據庫設計文檔,如果當時數據庫設計沒有采用PowerDesinger,到后期需要給客戶提供數據庫設計文檔、后期項目運維就會比較麻煩,今天給大家介紹如何使用PowerDesigner的逆向工程生成SQLServer數據…

檢查 Linux 服務器性能

如何用十條命令在一分鐘內檢查 Linux 服務器性能 如果你的Linux服務器突然負載暴增,報警短信快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性能問…

html 圓球的百分比,HTML5 很酷的球形器皿中水波狀的進度條

CSS語言:CSSSCSS確定* {box-sizing: border-box;}html,body {height: 100%;}body {background-color: #1a1a1a;font-family: sans-serif;font-size: 15px;color: #ccc;}input[type"text"] {background-color: transparent;margin-top: 30px;border: 0;bor…

SQLServer基礎:TOP、OFFSET-FETCH、SET ROWCOUNT用法筆記

今天給大家介紹一下TOP、OFFSET-FETCH、SET ROWCOUNT用法筆記,希望對大家能有所幫助!1、 TOP用法語法格式:TOP ( expression ) [ PERCENT ] [ WITH TIES ]expression:返回行數的數值表達式PERCENT:指返回的結果集行的百…