SQL Server 數(shù)據(jù)庫有三種文件類型,分別是數(shù)據(jù)文件、次要數(shù)據(jù)文件和日志文件,其中日志文件包含著用于恢復(fù)數(shù)據(jù)庫的所有日志信息,SQL Server總是先寫日志文件ldf,數(shù)據(jù)變化寫入mdf則可以滯后,所以日志寫入的速度在一定程序上決定了SQL Server所能承載的寫事務(wù)量,那么ldf寫入大小是多少呢?
?
要知道SQL Server寫 Log的大小,這里使用工具Process Monitor
這里設(shè)置一個Filter,以滿足只收集SQL Server 寫日志,如下圖所示:
在一個OLTP生產(chǎn)環(huán)境的結(jié)果分析如下:
從中可以看到這個UserDB.ldf的Log寫入是順序?qū)懀?
寫入大小以1024byte為主
:
通過上面的結(jié)果,針對Log文件ldf的寫要求,我們在選擇磁盤及RAID時,如何來做呢?推薦使用工具SQLIO來做一個針對單線程順序?qū)?kb硬件性能比對測試,來模擬Log寫操作,這個將在以后的文章里進行測試。
那么,SQL Log寫入ldf一定是以1024byte最多嗎?這個不一定的,以下是在另外的OLTP下得到的結(jié)果:
下面這個是Tempdb:
?
那么你的是多少呢?可以用Process Monitor下測下。
Process Monitor下載地址
收集到的數(shù)據(jù)存成Logfile.CSV.
然后用下列語句進行分析:
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
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
