收縮資料庫
『壹』 收縮資料庫與收縮文件有什麼區別
收縮資料庫
資料庫中的每個文件都可以通過刪除未使用的頁的方法來減小。盡管資料庫引擎會有效地重新使用空間,但某個文件多次出現無需原來大小的情況後,收縮文件就變得很有必要了。數據和事務日誌文件都可以減小(收縮)。可以成組或單獨地手動收縮資料庫文件,也可以設置資料庫,使其按照指定的間隔自動收縮。
文件始終從末尾開始收縮。例如,如果有個 5 GB 的文件,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 4 GB,則資料庫引擎將從文件的最後一個 1 GB 開始釋放盡可能多的空間。如果文件中被釋放的部分包含使用過的頁,則資料庫引擎先將這些頁重新放置到文件的保留部分。只能將資料庫收縮到沒有剩餘的可用空間為止。例如,如果某個 5 GB 的資料庫有 4 GB 的數據,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 3 GB,則只能釋放 1 GB。
自動資料庫收縮
將 AUTO_SHRINK 資料庫選項設置為 ON 後,資料庫引擎將自動收縮具有可用空間的資料庫。此選項可以使用 ALTER DATABASE 語句來進行設置。默認情況下,此選項設置為 OFF。資料庫引擎會定期檢查每個資料庫的空間使用情況。如果某個資料庫的 AUTO_SHRINK 選項設置為 ON,則資料庫引擎將減少資料庫中文件的大小。該活動在後台進行,並且不影響資料庫內的用戶活動。
『貳』 sql Server 中的「收縮資料庫」是什麼意思
收縮資料庫
資料庫中的每個文件都可以通過刪除未使用的頁的方法來減小。盡管資料庫引擎會有效地重新使用空間,但某個文件多次出現無需原來大小的情況後,收縮文件就變得很有必要了。數據和事務日誌文件都可以減小(收縮)。可以成組或單獨地手動收縮資料庫文件,也可以設置資料庫,使其按照指定的間隔自動收縮。
文件始終從末尾開始收縮。例如,如果有個 5 GB 的文件,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 4 GB,則資料庫引擎將從文件的最後一個 1 GB 開始釋放盡可能多的空間。如果文件中被釋放的部分包含使用過的頁,則資料庫引擎先將這些頁重新放置到文件的保留部分。只能將資料庫收縮到沒有剩餘的可用空間為止。例如,如果某個 5 GB 的資料庫有 4 GB 的數據,並且在 DBCC SHRINKFILE 語句中將 target_size 指定為 3 GB,則只能釋放 1 GB。
自動資料庫收縮
將 AUTO_SHRINK 資料庫選項設置為 ON 後,資料庫引擎將自動收縮具有可用空間的資料庫。此選項可以使用 ALTER DATABASE 語句來進行設置。默認情況下,此選項設置為 OFF。資料庫引擎會定期檢查每個資料庫的空間使用情況。如果某個資料庫的 AUTO_SHRINK 選項設置為 ON,則資料庫引擎將減少資料庫中文件的大小。該活動在後台進行,並且不影響資料庫內的用戶活動。
將資料庫設置為自動收縮
ALTER DATABASE (Transact-SQL)
手動資料庫收縮
您可以使用 DBCC SHRINKDATABASE 語句或 DBCC SHRINKFILE 語句來手動收縮資料庫或資料庫中的文件。如果 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 語句無法回收日誌文件中的所有指定空間,則該語句將發出信息性消息,指明必須執行什麼操作以便釋放更多空間。有關收縮日誌文件的詳細信息,請參閱收縮事務日誌。
在該過程中任意時間都可停止 DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 操作,所有已完成工作都將保留。
在使用 DBCC SHRINKDATABASE 語句時,您無法將整個資料庫收縮得比其初始大小更小。因此,如果資料庫創建時的大小為 10 MB,後來增長到 100 MB,則該資料庫最小隻能收縮到 10 MB,即使已經刪除資料庫的所有數據也是如此。
但是,使用 DBCC SHRINKFILE 語句時,可以將各個資料庫文件收縮得比其初始大小更小。必須對每個文件分別進行收縮,而不能嘗試收縮整個資料庫。
『叄』 怎樣在SQL Server 2000中收縮資料庫
操作步驟如下:
(1)打開SQL Server企業管理器。雙擊打開「資料庫」節點,在要收縮的資料庫名稱上,單擊滑鼠右鍵,在彈出的快捷菜單中選擇「所有任務」→「收縮資料庫」命令,彈出「收縮資料庫」對話框,如圖1所示。
圖1 收縮資料庫
(2)指定資料庫的收縮量,可以從以下選項中選擇。
在「收縮後文件中的最大可用空間」文本框中輸入收縮後資料庫中剩餘的可用空間量。以「資料庫大小,可用空間」值作為依據。如最大可用空間是「25%」,則在該選項中設置小於該數值的百分比,如「12%」。
選擇「在收縮前將頁移到文件起始位置」復選框,使釋放的文件空間保留在資料庫文件中,並使包含數據的頁移到資料庫文件的起始位置。
(3)在「調度」選項框中,選擇是否自動定期執行資料庫壓縮操作。選中「根據本調度來收縮資料庫」復選框,單擊「更改」按鈕,創建或更改自動收縮資料庫的頻率和時間。
(4)最後單擊「確定」按鈕完成操作。
『肆』 mysql資料庫 收縮的問題
論壇資料庫壓縮是不可能的,收縮不需要,插入數據的時候自動整理。
『伍』 為什麼不能經常地收縮資料庫文件
1. 收縮所移動的每個數據頁都會被寫入事務日誌
假設你有個資料庫(含數據和索引)佔用了50G空間, 你想收縮成40G. 而收縮過程 就是要把那40G的東西移到數據文件的開始. 同時, 為這個收縮, 事務日誌需要40G 的空間, 就象自動增長了那些空間(如果你之前沒預留那麼多空間的話). 然後, 你的日誌備份大小就會是40G加上」正常部分的」日誌. 如果你的資料庫恢復模式設成簡單的話,不會有這個現象, 因為在收縮過程中的CHECKPOINT會把日誌截斷的.
(此條適用於收縮數據文件) 2. 收縮後, 當用戶加入數據時, 數據文件又會自動增長.
增加資料庫的空間是個很」昂貴的」操作, 因為數據文件增長很費時間, 並且因為需要很多的資源而影響資料庫的性能. 同時, 一些操作會被阻塞直到增長的操作結束.
(此條適用於收縮數據和日誌文件)
SQL Server 2005及以後的版本:
SQL Server 2005加入了一個新特徵: 即時初始化(instant file initialization), 就是說建數據文件和增長數據文件會很快, 因為Windows不再把所有資料庫文件都寫上零了. 不過, 即時初始化只適用於數據文件, 而不適用於日誌文件. 同時, 對數據文件的初始化需要SQL SERVER服務帳號具有WINDOWS的SE_MANAGE_VOLUME_NAME的許可權 (這一許可權可以用WINDOWS的Perform Volume Maintenance Tasks的安全策略來設定). 在預設條件下, 這個許可權只限於系統管理員. 3. 在某些情況下, 自動增長不能」趕上」SQL SERVER對空間的需求.
這會產生兩個錯誤信息: 1) 如果數據文件空間滿了, 則產生錯誤1105; 2) 如果日誌文件滿了, 則產生錯誤9002.
(此條適用於收縮數據和日誌文件) 4. 移動數據頁會使你的資料庫產生碎片
假設你先重建索引(這個要求資料庫有空間), 然後又收縮資料庫. 實際上, 收縮會把你之前重建的索引又改回去了, 使你的資料庫產生碎片. (如果你先收縮, 然後重建索引, 結果就是你的資料庫文件會增大.)
(此條適用於收縮數據文件) 5. 頻繁地收縮和增長資料庫文件會使底層的文件系統產生碎片, 從而影響資料庫性能.(此條適用於收縮數據和日誌文件)
『陸』 如何收縮資料庫
你用資料庫管理器選中資料庫,先分離,然後再附加,然後再點收縮,收縮的時候先收縮日誌文件,一般能收縮很多,記得要填寫數字啊,比如上面提示能收縮為0,你就填個5兆,這樣預留一點空間,而且很快,收縮完日誌文件之後再收縮資料庫 同理比最小能收縮量大幾兆就可以了,但是收縮資料庫比較慢 需要很多時間
『柒』 資料庫收縮有幾種方法
--1用dbcc命令,帶不同的參數測試
--1.1收縮指定資料庫中的數據文件和日誌文件的大小
DBCCSHRINKDATABASE(test)
DBCCSHRINKDATABASE(test,TRUNCATEONLY)
DBCCSHRINKDATABASE(test,NOTRUNCATE)
DBCCSHRINKDATABASE(test)WITHNO_INFOMSGS
--1.2收縮當前資料庫的指定數據或日誌文件的大小,
DBCCSHRINKFILE(Test)
DBCCSHRINKFILE(Test_log)
DBCCSHRINKFILE(Test_log,EMPTYFILE)
DBCCSHRINKFILE(Test_log,TRUNCATEONLY)WITHNO_INFOMSGS
--2.用企業管理器
--選中資料庫->右鍵->任務->資料庫/文件->確定
『捌』 sql資料庫的收縮命令是什麼
1.清空日誌 DUMP TRANSACTION 庫名 WITH NO_LOG 2.截斷事務日誌: BACKUP LOG 資料庫名 WITH NO_LOG3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件 --選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 --選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了 也可以用SQL語句來完成 --收縮資料庫 DBCC SHRINKDATABASE(客戶資料) --收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles DBCC SHRINKFILE(1)4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行) a.分離資料庫: 企業管理器--伺服器--資料庫--右鍵--分離資料庫 b.在我的電腦中刪除LOG文件 c.附加資料庫: 企業管理器--伺服器--資料庫--右鍵--附加資料庫 此法將生成新的LOG,大小隻有500多K 或用代碼: 下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。 a.分離 E X E C sp_detach_db @dbname = 'pubs' b.刪除日誌文件 c.再附加 E X E C sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'5.為了以後能自動收縮,做如下設置: 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮" --SQL語句設置方式: E X E C sp_dboption '資料庫名', 'autoshrink', 'TRUE'6.如果想以後不讓它日誌增長得太大 企業管理器--伺服器--右鍵資料庫--屬性--事務日誌 --將文件增長限制為xM(x是你允許的最大數據文件大小) --SQL語句的設置方式: alter database 資料庫名 modify file(name=邏輯文件名,maxsize=20)特別注意: 請按步驟進行,未進行前面的步驟,請不要做後面的步驟 否則可能損壞你的資料庫. 一般不建議做第4,6兩步 第4步不安全,有可能損壞資料庫或丟失數據 第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復.另外提供一種更簡單的方法,本人屢試不爽,建議大家使用。更簡單的方法: 1。右建資料庫屬性窗口--故障還原模型--設為簡單 2。右建資料庫所有任務--收縮資料庫 3。右建資料庫屬性窗口--故障還原模型--設為大容量日誌記錄