SQL Server Log文件對磁盤的寫操做大小是多少

SQL Server 數據庫有三種文件類型,分別是數據文件、次要數據文件和日誌文件,其中日誌文件包含着用於恢復數據庫的全部日誌信息,SQL Server老是先寫日誌文件ldf,數據變化寫入mdf則能夠滯後,因此日誌寫入的速度在必定程序上決定了SQL Server所能承載的寫事務量,那麼ldf寫入大小是多少呢?sql

 

要知道SQL Server寫 Log的大小,這裏使用工具Process Monitor數據庫

這裏設置一個Filter,以知足只收集SQL Server 寫日誌,以下圖所示:工具

image

在一個OLTP生產環境的結果分析以下:
從中能夠看到這個UserDB.ldf的Log寫入是順序寫,寫入大小以1024byte爲主性能

image

image

經過上面的結果,針對Log文件ldf的寫要求,咱們在選擇磁盤及RAID時,如何來作呢?推薦使用工具SQLIO來作一個針對單線程順序寫1kb硬件性能比對測試,來模擬Log寫操做,這個將在之後的文章裏進行測試。測試

那麼,SQL Log寫入ldf必定是以1024byte最多嗎?這個不必定的,如下是在另外的OLTP下獲得的結果:spa

$90$3HOA0G})ISZHIJKA3BF

F$ZWU6NTID%S`2S`~5U_6N9

下面這個是Tempdb:線程

$IA4%JB$Q]2G9MO4S0R17(Q

 

那麼你的是多少呢?能夠用Process Monitor下測下。
Process Monitor下載地址日誌

收集到的數據存成Logfile.CSV.blog

而後用下列語句進行分析:事務

USE tempdb
GO
CREATE TABLE [dbo].[Logfile]
    (
      [Time of Day] [nvarchar](MAX) NULL ,
      [Process Name] [nvarchar](MAX) NULL ,
      [PID] [nvarchar](MAX) NULL ,
      [Operation] [nvarchar](MAX) NULL ,
      [Path] [nvarchar](MAX) NULL ,
      [Result] [nvarchar](MAX) NULL ,
      [Detail] [nvarchar](MAX) NULL
    )
ON  [PRIMARY]

GO

BULK INSERT [Logfile] FROM 'D:\Tmp\Logfile.CSV'
WITH (
         FIELDTERMINATOR =',',
 FIRSTROW=2
)

SELECT  [Time of Day] ,
        [Process Name] ,
        PID ,
        Operation ,
        REPLACE(PATH, 'DBname', 'myDB') AS Path ,
        Result ,
        Detail
FROM    [Logfile]
--WHERE PATH LIKE '%DBname%'

SELECT  SUBSTRING(detail, CHARINDEX('Length:', detail) + 7,
                  CHARINDEX('Flags', detail) - CHARINDEX('Length:', detail)
                  - 13) AS size
INTO    #
FROM    [Logfile]
WHERE   PATH LIKE '%HighEndSeekerDB%'

SELECT  size AS [SIZE(Bypte)] ,
        COUNT(*) AS CNT ,
        LTRIM(CAST(COUNT(*) * 1.0 / ( SELECT    COUNT(*)
                                      FROM      #
                                    ) * 100 AS NUMERIC(18, 4))) + '%' AS ratio
FROM    #
GROUP BY size
--ORDER BY count(*) desc
--ORDER BY CAST(REPLACE(size, ',', '') AS BIGINT)  
ORDER BY ratio DESC
 
相關文章
相關標籤/搜索