惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
Forbes - Security
Forbes - Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
V
Visual Studio Blog
月光博客
月光博客
博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
S
SegmentFault 最新的问题
博客园 - 司徒正美
P
Proofpoint News Feed
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
P
Proofpoint News Feed
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
T
Tenable Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
V
V2EX
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
Latest news
Latest news
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
博客园 - 【当耐特】
B
Blog RSS Feed
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
NISL@THU
NISL@THU
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security

博客园 - nzperfect

PAGELATCH_EX Contention on 2:1:103 SQL Server AlwaysON 同步模式的疑似陷阱 SQL Server Log文件对磁盘的写操作大小是多少 Initializing the FallBack certificate failed . TDSSNIClient initialization failed Error after SQL Server 2012 installation: Login Failure for "SQL Server Integration Services 11.0" SSIS service SQL Server 灾难恢复31天之第6天:管理区分配页损坏处理 SQL Server 灾难恢复31天之第5天:处理损坏的非聚集索引 SQL Server 灾难恢复31天之第3天:在还原数据库时确定需要哪些备份文件 SQL Server 灾难恢复31天之第4天:备份 SQL Server 灾难恢复31天之第2天:包含数据库备份在还原时的保护 SQL Server 灾难恢复31天之第1天:DBCC CHECK命令会自动使用已经存在的数据库快照吗? 发布订阅延迟故障排查案例:分发读进程延迟 Query Hint FAST number_rows 改变SQL Server 执行计划 SQL Server 通过界面生成修改列类型脚本时的一个风险(或Bug) 是什么引起执行计划变得极其糟糕? 应该使用更新统计信息来解决它吗? 如何完整的修改一个数据库的名称 update值与原值相同时,SQL Server会真的去update还是忽略呢? How can I bring mirror database online after principal server is down ? performance monitor没有SQL Server性能计数器
XEvent – SQL Server Log文件对磁盘的写操作大小是多少
nzperfect · 2014-05-23 · via 博客园 - nzperfect

XEvent – SQL Server Log文件对磁盘的写操作大小是多少

Posted on 2014-05-23 16:58  nzperfect  阅读(1120)  评论()    收藏  举报

本篇是上一篇SQL Server Log文件对磁盘的写操作大小是多少的续,使用XEvent收集SQL Server Data文件和Log文件的写大小,脚本如下:

DECLARE @DBNAME VARCHAR(256)
SET @DBNAME = 'myDB'
DECLARE @sqlcmd NVARCHAR(MAX) = 'IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE
name=''filewritecompleted'')
   DROP EVENT SESSION [filewritecompleted] ON SERVER;
CREATE EVENT SESSION [filewritecompleted]
ON SERVER
ADD EVENT sqlserver.file_write_completed 
(WHERE (database_id = ' + CAST(DB_ID(''+@DBNAME+'') AS VARCHAR(3))
    + '))
ADD TARGET package0.asynchronous_file_target(
     SET filename=''D:\XEvent\filewritecompleted.xel'',
         metadatafile=''D:\XEvent\filewritecompleted.xem'')
WITH (MAX_MEMORY = 8192KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, STARTUP_STATE = ON)'
EXEC(@sqlcmd)
GO
 
ALTER EVENT SESSION filewritecompleted
ON SERVER
STATE=START
GO
 
WAITFOR DELAY '00:05:00'
 
ALTER EVENT SESSION filewritecompleted
ON SERVER
STATE=STOP
GO
 
USE tempdb
GO
 
SELECT  CAST(event_data AS XML) AS event_data
INTO    TargetEvents
FROM    sys.fn_xe_file_target_read_file('D:\XEvent\filewritecompleted*.xel',
                                        'D:\XEvent\filewritecompleted*.xem', NULL,
                                        NULL)
 
SELECT  event_data.value('(event/@name)[1]', 'varchar(50)') AS event_name ,
        DATEADD(hh, DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP),
                event_data.value('(event/@timestamp)[1]', 'datetime2')) AS [timestamp] ,
        COALESCE(event_data.value('(event/data[@name="database_id"]/value)[1]',
                                  'int'),
                 event_data.value('(event/action[@name="database_id"]/value)[1]',
                                  'int')) AS database_id ,
        event_data.value('(event/data[@name="mode"]/text)[1]',
                         'nvarchar(4000)') AS [mode] ,
        event_data.value('(event/data[@name="file_handle"]/value)[1]',
                         'nvarchar(4000)') AS [file_handle] ,
        event_data.value('(event/data[@name="offset"]/value)[1]', 'bigint') AS [offset] ,
        event_data.value('(event/data[@name="file_id"]/value)[1]', 'int') AS [file_id] ,
        event_data.value('(event/data[@name="filegroup_id"]/value)[1]', 'int') AS [filegroup_id] ,
        event_data.value('(event/data[@name="size"]/value)[1]', 'bigint') AS [size]
INTO    Results
FROM    TargetEvents
 
select * from Results
 
 
--Log File Write Size
SELECT  size ,
        COUNT(*) AS cnt ,
        LTRIM(CAST(COUNT(*) * 1.0 / ( SELECT    COUNT(*)
                                      FROM      Results
                                      WHERE     file_id = 2
                                    ) * 100 AS NUMERIC(18, 4))) + '%' AS ratio
FROM    Results
WHERE   file_id = 2
GROUP BY size
ORDER BY CAST(COUNT(*) * 1.0 / ( SELECT    COUNT(*)
                                      FROM      Results
                                      WHERE     file_id = 2
                                    ) * 100 AS NUMERIC(18, 4)) desc
 
 
--Data File Write Size
SELECT  size ,
        COUNT(*) AS cnt ,
        LTRIM(CAST(COUNT(*) * 1.0 / ( SELECT    COUNT(*)
                                      FROM      Results
                                      WHERE     file_id != 2
                                    ) * 100 AS NUMERIC(18, 4))) + '%' AS ratio
FROM    Results
WHERE   file_id != 2
GROUP BY size
ORDER BY CAST(COUNT(*) * 1.0 / ( SELECT    COUNT(*)
                                      FROM      Results
                                      WHERE     file_id = 2
                                    ) * 100 AS NUMERIC(18, 4)) desc
 
--DROP TABLE tempdb.dbo.TargetEvents, tempdb.dbo.Results

在一个OLTP结果如下:

Log File Write Size:

image

Data File Write Size :

image

用XEvent收集,的确要比之前的方法简单很多,此方法感谢一位Cookies_Tang网友提醒。