日誌檔案不斷增長

2021-09-22 20:41:42 字數 2229 閱讀 1496

原文:

日誌檔案不斷增長 sqlserver定時執行(checkpoint),保證「髒頁」被寫入硬碟。沒做checkpoint的,可能是只在記憶體中修改,資料檔案還沒同步。sqlserver要在硬碟的日誌檔案中有記錄,一邊異常重啟後重新修改。

所有日誌都有嚴格順序,不能有跳躍。

如果恢復模式不是簡單模式,那麼sqlserver會認為使用者是要去備份日誌記錄的。所有沒備份的記錄都會保留。

如事務型複製(transactional replication)和映象。

除以上的型別之外,其他型別會在checkpoint時做截斷把占用的空間標誌為可重用。如果重用空間足夠,是不會報告日誌空間已滿。checkpoint的頻率由伺服器的「recovery interval」決定,預設為一分鐘左右。

在這種模式下,做完整備份和差異備份是不會截斷日誌的。

sqlserver不會干預前端程式的連線遺留事務在sqlserver中的行為。只要不退出,事務會一直存在,直到(此處原為知道,謝謝kalagooooo的細心發現,現以改正過來)

前端主動提交或者回滾。此時做日誌備份也沒用了。

如建立、重建索引。或者insert/delete大量資料。或者是伺服器端游標沒有把資料及時取走。

要避免上述現象,來防止日誌不斷增長。對於不會做日誌備份的資料庫,設為簡單模式即可。如果是完整模式,一定要定期做日誌備份。如果映象或複製除了問題,要及時處理,如果沒有處理,那麼要暫時拆除複製或映象。程式設計時,也要避免事務時間過長、過多。

檢查日誌使用百分比、恢復模式和日誌重用等待狀態。從2005以後,sys.databases加入了log_reuse_wait(log_reuse_wait_desc)來反映不能階段日誌的原因

log_reuse_wait

log_reuse_wait_desc 說明

0nothing

有可重用的虛擬日誌檔案 1

checkpoint

上次日誌截斷後,未出現檢查點,或者日誌頭部尚未跨乙個虛擬日誌檔案移動範圍(所有模式) 2

log_backup

要求日誌備份將日誌表頭前移(非簡單模式)。日誌備份完成後,日誌標頭將前移,並一些空間可能會變成可重用。 3

active_backup_or_restore

資料庫備份或還原正在進行(所有模式) 4

active_transaction

事務處於活動狀態(所有模式) 5

database_mirroring

資料庫映象滯後(完整模式) 6

replication

在事務複製中,與發布相關的事務仍未傳遞到分發資料庫(僅限於完整模式) 7

database_snapshot_createion

正在建立資料庫快照(所有模式) 8

log_scan

正在進行日誌掃瞄(所有模式) 9

other_transient

此值當前未使用

使用以下指令碼檢查:

dbcc sqlperf(logspace)

goselect name,recovery_model_desc,log_reuse_wait,log_reuse_wait_desc

from sys.databases

go

如果log space used(%)很高,就要馬上定位為什麼不能被清除。如果狀態為:log_backup,就意味(此處原為以為,感謝kalagooooo的細心發現,現以改正過來

)著sqlserver,意味著sqlserver等待著日誌備份。要檢查是否需要做日誌備份。

如果大部分日誌都在使用中且重用狀態為:active_transaction,那麼要看看最久的事務是誰申請的:

dbcc opentran

goselect *

from sys.dm_exec_sessions as t2 ,

sys.dm_exec_connections as t1

where t1.session_id = t2.session_id

and t1.session_id > 50

執行後返回:

找出最久的事務之後,先要檢查是否有問題,如果有問題,那麼最好從應用層面把事務提交或回滾。如果實在不行,那就使用kill spid來殺掉程序。

日誌檔案不斷增長

sqlserver定時執行 checkpoint 保證 髒頁 被寫入硬碟。沒做checkpoint的,可能是只在記憶體中修改,資料檔案還沒同步。sqlserver要在硬碟的日誌檔案中有記錄,一邊異常重啟後重新修改。所有日誌都有嚴格順序,不能有跳躍。如果恢復模式不是簡單模式,那麼sqlserver會認...

你還可以再詭異點嗎 SQL日誌檔案不斷增長

前言 今天算是遇到了乙個罕見的案例。sql日誌檔案不斷增長的各種例項不用多說,園子裡有很多牛人有過介紹,如果我再闡述這些陳谷子芝麻,想必已會被無數次吐槽。但這次我碰到的問題確實比較詭異,其解決方式也是我第一次使用。下文將為各位看管詳細介紹我的解決思路。現象 一客戶反饋資料庫的日誌檔案不斷增長,已分配...

tempdb 日誌檔案增長的問題

前兩天在乙個客戶那裡發現tempdb log 檔案增長很大,已經使用40gb了,而tempdb log 檔案總的分配空間是70gb,並且日誌空間貌似不能重用,他們使用sql 2012 打的sp4補丁,遠端分析問題,沒有發現長時間開啟的事物,業務使用事物都是使用完即時關閉的,而且通過查詢tempdb ...