sqlserver 恢復模式及避免日誌爆滿的方法

2021-07-13 01:10:52 字數 1718 閱讀 9747

recovery ******

迴圈日誌,空間自動**,不可備份日誌,恢復時僅能恢復到資料庫備份時間點;

用於落地資料或測試環境或olap,不推薦用於生產oltp

有時候distribution過大也可置為******

recovery bulk_logged

常規操作日誌正常記錄,特定操作時僅記錄少量日誌;

恢復時特定操作將做回滾處理,其他操作正常恢復到當前

特定操作:

1、select * into test2 from test1 where 1=1

2、dts資料匯入

3、bulk into

注意:特定操作不等於大資料操作,例如:

insert into test2 select * from test1

delete  from test2 where id<100000

將會記錄全部日誌 

優化表複製

--1、改為bulk_logged恢復模式

--操作前日誌使用率

dbcc sqlperf(logspace)

alter database testdb set recovery bulk_logged

--2、推薦將sql1替換sql2

sql1:select * into test2 from test1 where 1=1 

sql2:insert into test2 select * from test1

- -操作後日誌使用率,發現變化不大

dbcc sqlperf(logspace)

--3、重建索引

create index on test2

--4、重新改為full恢復模式

alter database testdb set recovery full

即優化了日誌空間和插入速度,又優化了索引(大量資料插入,會引起大量索引碎片)

full recovery <--> bulk_logged recovery

切換時不會造成日誌鏈斷裂,所以也不用擔心日誌不能備份

**:

recovery full

通過事務日誌將資料庫還原到任意的時刻點,

full模式下的空間優化:

一、事務內進行大批量的資料刪除、更新操作,引起的日誌爆滿

1.多次少量原則,每次寫入一定量的日誌

2.手工觸發checkpoint,每次發生checkpoint時會自動截斷事務日誌

二、複製時引起的日誌爆滿

複製可以在******恢復模式下進行

三、完整恢復模式下引起的日誌爆滿

1.配合備份策略,進行日誌歸檔

2.定期刪除歷史日誌歸檔檔案

四、執行備份的時候,可以截斷部分事務日誌

五、大批量資料匯入的時引起的日誌爆滿

將恢復模式暫時改為bulk_logged(僅記錄回滾所需日誌,不記錄插入日誌),完成後及時改為full

六、使用警報,可以實現日誌使用率超過一定量自動歸檔

七、檢視日誌空間使用率dbcc sqlperf(logspace)

各模式間切換時注意點

1、******->full

完成切換後,需要立刻進行差異備份,恢復日誌鏈

2、full->******

先進行日誌備份,因為切換會中斷日誌鏈

3、bulk_logged<->full 自由切換

4、******<->bulk_logged 不常見

SQL Server恢復模式

sql server 提供三種可供選擇的恢復模式 簡單恢復模式 完整恢復模式和大容量日誌恢復模式。恢復模式是乙個資料庫屬性,它用於控制資料庫備份和還原操作基本行為。為每個資料庫選擇最佳恢復模式是計畫備份和還原策略的必要部分。檢視恢復模式 1.展開 資料庫 然後根據資料庫的不同,選擇使用者資料庫,或展...

SqlServer2005備份模式與恢復模式

sql server 2005及以上版本也可以使用下面這條語句來檢視 select name,recovery model desc from master.sys.databases order by name 如果想改變資料庫的恢復模式,可以使用下面sql語句 簡單恢復模式 alter data...

sql server 資料恢復

1 備份當前資料庫的事務日誌 backup log 資料庫名 to disk n 備份檔案名 with norecovery 2 恢復乙個誤刪除之前的完全備份 restore database 資料庫名 from disk n 資料庫上一次完全備份的檔名 with norecovery,replac...