Sql-Server

系統健康擴展事件的文件增長和位置更改

  • February 28, 2019

我正在繼續我之前的問題中關於系統健康擴展事件的問題系統健康擴展事件文件如何滾動?

  1. 我看到預設情況下系統健康文件位置轉到日誌文件夾,是否可以更改它,因為它很難找到 200 多台伺服器,從而使其成為跨 x 伺服器的標準位置
  2. 當文件數量從預設值 5 增加到 10 並且大小從 5 MB 增加到 25 MB 時,需要根據我對上一個問題的評論了解以下行為

a) 為什麼將文件數更改為 10 後,我們還沒有看到另外 5 個文件?

b)文件如何填滿空間,因為我看到沒有順序歸檔說最舊的文件

$$ 3 days old $$ 仍然是 3 MB,而一些最新的$$ consider today $$已經填滿了 5 MB 並回到舊的記錄數據。這個寫機制是怎麼做的?我需要了解這一點以弄清楚在進行更改之前可以創建多少個文件以及它們有多大

  1. 我看到預設情況下系統健康文件位置轉到日誌文件夾,是否可以更改它,因為它很難找到 200 多台伺服器,從而使其成為跨 x 伺服器的標準位置

是的,您必須編輯擴展事件定義:

ALTER EVENT SESSION [system_health] ON SERVER 
DROP TARGET package0.event_file
ALTER EVENT SESSION [system_health] ON SERVER 
ADD TARGET package0.event_file(SET filename=N'F:\MyLocation\system_health.xel',max_file_size=(50),max_rollover_files=(40))
GO

a) 為什麼將文件數更改為 10 後,我們還沒有看到另外 5 個文件?

因為它以滾動方式寫入文件,例如 SQL Server 錯誤日誌…所以您可以將其設置為保留 99 個錯誤日誌,但它不會只輸出 99 個。當數據翻轉時,會發生重新啟動等.,然後如果需要,將創建新文件。

b)文件如何填滿空間,因為我看到沒有順序歸檔說最舊的文件

$$ 3 days old $$仍然是 3 MB,而一些最新的$$ consider today $$已經填滿了 5 MB 並回到舊的記錄數據。

它們根據需要使用,但從不“返回”並填充以前使用的文件。舊文件最終將被老化並刪除,並創建一個新文件來代替舊刪除的文件。所以,是的,你所看到的一切都是設計使然。這意味著 3MB 的一個在發生某些事情之前已經寫入了 3MB 的數據(最像服務的重新啟動),然後下一個寫入了 5MB 並滾動到一個新文件。

這個寫機制是怎麼做的?

如果它設置為延遲或同步,它將在刷新之前等待很長時間,否則它將緩衝區刷新到文件中。不確定您在尋找這個問題的內容。

我需要了解這一點以弄清楚在進行更改之前可以創建多少個文件以及它們有多大

每個實例都會有所不同,儘管我希望大多數實例在重新啟動之間保持執行很長時間……如果是這樣,大多數實例應該符合平均測試量,以保留您正在查看的任何數據無論您想保留多久,都可以收藏。

引用自:https://dba.stackexchange.com/questions/230980