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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文:SQL Server Log文件对磁盘的写操作大小是多少SQL Server 数据库有三种文件类型,分别是数据文件、次要数据文件和日志文件,其中日志文件包含着用于恢复数据库的所有日志信息,SQL Server总是先写日志文件ldf,数据变化写入mdf则可以滞后,所以日志写入的速度在一定程序上...
原文: SQL Server Log文件对磁盘的写操作大小是多少

SQL Server 数据库有三种文件类型,分别是数据文件、次要数据文件和日志文件,其中日志文件包含着用于恢复数据库的所有日志信息,SQL Server总是先写日志文件ldf,数据变化写入mdf则可以滞后,所以日志写入的速度在一定程序上决定了SQL Server所能承载的写事务量,那么ldf写入大小是多少呢?

 

要知道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下得到的结果:

$90$3HOA0G})ISZHIJKA3BF

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

下面这个是Tempdb:

$IA4%JB$Q]2G9MO4S0R17(Q

 

那么你的是多少呢?可以用Process Monitor下测下。
Process Monitor下载地址

收集到的数据存成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
 

  


 

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8天前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
37 2
|
1月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
阿里云日志服务(SLS)推出智能分析助手 SLS SQL Copilot,融合 AI 技术与日志分析最佳实践,将自然语言转换为 SQL 查询,降低使用门槛,提升查询效率。其具备原生集成、智能语义理解与高效执行能力,助力用户快速洞察日志数据价值,实现智能化日志分析新体验。
155 1
|
1月前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
230 24
|
24天前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
97 6
|
7月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
7月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
8月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
931 28
|
11月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
352 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
11月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
269 1
【赵渝强老师】Oracle的控制文件与归档日志文件