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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:XEvent – SQL Server Log文件对磁盘的写操作大小是多少本篇是上一篇SQL Server Log文件对磁盘的写操作大小是多少的续,使用XEvent收集SQL Server Data文件和Log文件的写大小,脚本如下: DECLARE @DBNAME VARCHAR(2...
原文: XEvent – SQL Server Log文件对磁盘的写操作大小是多少

本篇是上一篇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网友提醒。

目录
相关文章
|
7天前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
阿里云日志服务(SLS)推出智能分析助手 SLS SQL Copilot,融合 AI 技术与日志分析最佳实践,将自然语言转换为 SQL 查询,降低使用门槛,提升查询效率。其具备原生集成、智能语义理解与高效执行能力,助力用户快速洞察日志数据价值,实现智能化日志分析新体验。
|
7天前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
|
7月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
809 28
|
10月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
336 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
10月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
240 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
9月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
9月前
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
267 3
|
10月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
167 4
|
10月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
295 2