日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQLServer数据库收缩相关知识笔记

發(fā)布時間:2023/12/10 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQLServer数据库收缩相关知识笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、為什么要進行數(shù)據(jù)庫收縮?

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

2、數(shù)據(jù)庫收縮的原理

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

3、數(shù)據(jù)庫收縮的限制和局限

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

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

不能在備份數(shù)據(jù)庫時收縮數(shù)據(jù)庫。 反之,也不能在數(shù)據(jù)庫執(zhí)行收縮操作時備份數(shù)據(jù)庫。

4、數(shù)據(jù)庫收縮的方式

4.1 收縮數(shù)據(jù)庫 DBCC SHRINKDATABASE

介紹:收縮指定數(shù)據(jù)庫中的數(shù)據(jù)文件大小。

語法格式:

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

參數(shù)說明:

  • database_name:是要收縮的數(shù)據(jù)庫名稱

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

  • NOTRUNCATE:導(dǎo)致在數(shù)據(jù)庫文件中保留所釋放的文件空間。如果未指定,將所釋放的文件空間釋放給操作系統(tǒng)。

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

4.2 收縮數(shù)據(jù)庫文件 DBCC SHRINKFILE

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

語法格式:

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

參數(shù)說明:

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

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

  • target_size:用兆字節(jié)表示的文件大小(用整數(shù)表示)。如果未指定,則 DBCC SHRINKFILE 將文件大小減少到默認(rèn)文件大小。默認(rèn)大小為創(chuàng)建文件時指定的大小。

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

例如,如果創(chuàng)建一個10MB 的文件,然后在文件仍然為空的時候?qū)⑽募湛s為2 MB,默認(rèn)文件大小將設(shè)置為2 MB。這只適用于永遠不會包含數(shù)據(jù)的空文件。

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

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

  • NOTRUNCATE 只適用于數(shù)據(jù)文件。日志文件不受影響。

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

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

5、示例

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

IT技術(shù)分享社區(qū)

個人博客網(wǎng)站:https://programmerblog.xyz

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

總結(jié)

以上是生活随笔為你收集整理的SQLServer数据库收缩相关知识笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。