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

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

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

要知道SQL Server写 Log的大小,这里使用工具Process Monitor

这里设置一个Filter,以满足只收集SQL Server 写日志,如下图所示:

在一个OLTP生产环境的结果分析如下:
从中可以看到这个UserDB.ldf的Log写入是顺序写,写入大小以1024byte为主

通过上面的结果,针对Log文件ldf的写要求,我们在选择磁盘及RAID时,如何来做呢?推荐使用工具SQLIO来做一个针对单线程顺序写1kb硬件性能比对测试,来模拟Log写操作,这个将在以后的文章里进行测试。

那么,SQL Log写入ldf一定是以1024byte最多吗?这个不一定的,以下是在另外的OLTP下得到的结果:

下面这个是Tempdb:

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

收集到的数据存成Logfile.CSV.

然后用下列语句进行分析:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

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

  

SQL Server Log文件对磁盘的写操作大小是多少,布布扣,bubuko.com

时间: 2024-12-29 12:00:21

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

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

原文:XEvent – SQL Server Log文件对磁盘的写操作大小是多少 本篇是上一篇SQL Server Log文件对磁盘的写操作大小是多少的续,使用XEvent收集SQL Server Data文件和Log文件的写大小,脚本如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

SQL Server日志文件庞大收缩方法(实测好用)

原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK='NUL' --收缩 DBCC SHRINKFILE('CloudMonitor_log') 以后就可以采用常规的定期备份日志(比如一小时一次)来防止日志文件无限增长. SQL Server日志文件庞大收缩并非易事, 文章中提到: 由于首日志.尾日志和空间重复利用的原因,当备份日志后产生了日志截断

SQL Server 的文件组和文件

1.默认情况 一般创建数据库后,有两个文件,后缀分别为 .mdf(主要文件) 和 .ldf(日志文件) 默认只有一个文件组 2.添加文件组,文件组是用来放文件的(用户可以添加文件 后缀默认为 .ndf的文件) 3.添加文件 4.为什么用文件组 对于用户角度来说,需对创建的对象指定存储的文件组只有三种数据对象:表,索引和大对象(LOB) 使用文件组可以隔离用户和文件,使得用户针对文件组来建立表和索引,而不是实际磁盘中的文件.当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体

4.2.4 SQL Server数据库文件

4.2.4 SQL Server数据库文件SQL Server将数据存储在数据文件中,将事务记录存储在事务□志文件中.如果通过 一个逻辑数据库名称将它们集合到一起,这些文件就是数据库.SQL Server数据库可以具 有多个数据文件和多个事务日志文件(虽然-个事务日志文件通常已经足够).当首次创建数据库时,它会有一个默认文件扩展名为.mdf的主数据文件.数据库也可 以有默认扩展名为m df的辅助数据文件.这些数据文件可以组合到一个称为文件组的逻辑 组中,第 5 章将对此进行介绍.该数据库至少有一

SQL Server日志文件过大 大日志文件清理方法 不分离数据库

SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库--〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象.下面的方式是不需要做数据库分离和附加操作的. SQL 2008收缩清空日志方法: 1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了.1).选择数据库–属性-选项-恢复模式–选择简单.2).收缩数据库后,再调回完整.2

如何处理SQL Server事务复制中的大事务操作

如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对象的架构和数据),然后将这些文件存储在快照文件夹中,并在分发服务器中的分发数据库中记录同步作业. 日志读取器代理监视为事务复制配置的每个数据库的事务日志,并将标记为要复制的事务从事务日志复制到分发数据库中,分发数据库的作用相当于一个可靠的存储-转发队列. 分发代理将快照文件夹中的初始快照文件和分发数

sql server 查看列备注、类型、字段大小

select 列名 = a.name ,类型 = c.name ,长度 = columnproperty(a.id,a.name,'precision') ,备注 = g.value from syscolumns a left join sysobjects b on a.id=b.id left join systypes c on a.xusertype = c.xusertype left join sysproperties g on a.id =g.id and a.colid =g

sql server log日志文件减少的方法

随着时间的推移,你会发现数据库的日志文件会多达20G或更多,这时候你就需要以下方法了. -- 首先把数据库的恢复模式改为Simple ALTER DATABASE [数据库] SET RECOVERY SIMPLE; GO -- 缩小log文件至1M,逻辑名称可以通过sp_helpfile拿到 DBCC SHRINKFILE ([数据库日志名], 1); GO -- 重置数据库的恢复模式 ALTER DATABASE [数据库] SET RECOVERY FULL; GO 注意,第一步先用sp_

人人都是 DBA(V)SQL Server 数据库文件

SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname(owner_sid) AS [owner] ,create_date ,user_access_desc ,state_desc FROM sys.databases WHERE database_id <= 4; master master 数据库包含用于记录整个服务器安装信息和后续创建的所有数