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

2022-02-14 20:12:59 字數 1642 閱讀 6869

前言

今天算是遇到了乙個罕見的案例。

sql日誌檔案不斷增長的各種例項不用多說,園子裡有很多牛人有過介紹,如果我再闡述這些陳谷子芝麻,想必已會被無數次吐槽。

但這次我碰到的問題確實比較詭異,其解決方式也是我第一次使用。

下文將為各位看管詳細介紹我的解決思路。

現象

一客戶反饋資料庫的日誌檔案不斷增長,已分配的磁碟空間快使用完,嘗試過事務日誌截斷(事務日誌備份)的操作,但沒有任何效果。

分析

遇到這個問題,我最直接的感受:肯定有大的事務一直在執行,導致日誌備份無法截斷事務日誌的大小。

首先,我在該資料庫下執行dbcc loginfo()

圖一從圖一的紅色框可以看到,資料庫的多個vlf的狀態都為2,也就是active狀態。(如果為0 ,表示為inactive)。

這表明這些日誌檔案確實都在活動狀態,一般而言,導致這種現象的原因主要有三種:長事務的執行、replication和mirroring延遲。

但這個客戶沒有採用replication和mirroring,所以我初步鎖定問題是因為長事務的執行導致。按照常規的方法,我只需分析下這個事務是否遇到阻塞、死鎖等情況,然後給出對應的解決方案即可。(但實際情況並非如此)

為保險起見,我執行如下語句來驗證下我的判斷:

圖二顯然,我的判斷錯了,可以看到,目前【log_reuse_wait_desc】的狀態為【replication】。也就是說正是事務日誌分發導致日誌檔案不斷增大的原因。

正如前文分析的,這個資料庫並沒有用作發布訂閱,怎麼會出現這個狀態呢?

經與客戶溝通,了解這個資料庫其實是從乙個發布訂閱的資料庫中還原過來的,儘管新的資料庫並沒有採用發布訂閱,但資料庫中發布訂閱的一些配置選項還在,從而導致了資料庫的誤判,致使日誌檔案不斷增大。

方案

知道了原因就好辦了。

在網上找些資料,發現了sp_removedbreplication這個儲存過程,執行後再去收縮日誌檔案,問題果然解決!

圖三總結

儘管本文的場景比較少見,但總體解決的思路與其他(日誌檔案不斷增長)其實是一樣的。少許地方不太明白可以通過網路等一些工具獲得。

這也說明了sql原理的重要性,借用一本書的序言中的一句話【越接觸本質越不會迷茫!】。多接觸原理,很多東西都是觸類旁通的。

年齡大了還可以學習程式設計嗎

在程式設計的道路上,總是能遇到那些很有天分並異常努力的程式設計師。他們不僅程式設計能力強,而且總是在他們的訪談或者部落格裡看到,從小就開始學習程式設計,在非常年輕的時候就已經成績斐然。這讓在大學才開始學習程式設計的我壓力非常大,時常假設如果自己小時候就開始學習程式設計,想必現在也是走上了人生巔峰。可...

轉行做IT,還可以成為技術大牛嗎?

因為工作的原因,在日常生活中,有很多小夥伴向小卓諮詢職業生涯的抉擇。他們對自己的職業現狀不滿意,打算學習程式設計成為一名程式設計師。嗯,有想法,網際網路火了這麼多年,還在持續公升溫中,如果自己確實適合做技術,選擇it是很明智的。拋開其他因素,先只討論薪水 業界標桿 bat 的薪水如下 阿里 你知道嗎...

你還能再「二」一些嗎?

二 一直是乙個很火的詞,可以用來形容乙個人頭腦簡單,行為愚蠢。那麼在英語中如何地道地表達 二 的意思呢?其實就是乙個很簡單的詞 thick.thick 這個詞我們初中就學過了,就是 厚 的意思。可是我們今天要說的,是thick在口語中另外乙個常用的意思 lacking mental agility ...