关于writes写入次数的误区

原创 2017年09月28日 13:10:45

前言

在群里小伙伴提出的一个问题,感觉很有意思,所以专门分享一下。

背景

在运维数据库的时候,有时候会遇到磁盘写入非常频繁的情况。磁盘活动时间100%,队列长度高等。如下图:

此时,我们经常会去做的一件事情是,开启profier 然后查看write数字高的语句,找出是什么语句造成的写入压力。

关于这个列,微软的说明如下:代表写入物理磁盘的次数

数据修改的过程
当客户端发出如下请求时:update test set id=10 where id=1 ,数据库内部修改过程如下:
1 .修改内存中,也就是BUFFER POOL里面的数据页.
2.把日志写入LDF日志文件
此时 事务就可以提交了。对前面应用来讲。这个update操作已经完成。
3.后台进程进行checkpoint 或者 lzay writer 的时候,才会吧内存中的脏页刷新到mdf磁盘文件
不过对于批量写入比如bulk insert and select into.,有一个 eager writer。页面可能会马上被写入磁盘

测试

CHECKPOINT
DBCC DropCleanBuffers
SELECT *
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID()
AND is_modified = 1
SELECT '更新前', num_of_writes, num_of_bytes_written
FROM sys.dm_io_virtual_file_stats(db_id(), 1)

UPDATE test SET id =10 WHERE id=1


--更新后
SELECT *
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID()
AND is_modified = 1

SELECT '更新后', num_of_writes, num_of_bytes_written
FROM sys.dm_io_virtual_file_stats(db_id(), 1)

从图中,可以看到,脏页增加了,但是 数据文件的写入次数并没有增加。
--checkpoint以后
CHECKPOINT
SELECT *
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID()
AND is_modified = 1

SELECT 'checkpoint后', num_of_writes, num_of_bytes_written
FROM sys.dm_io_virtual_file_stats(db_id(), 1)

checkpoint以后脏页没有了,写入磁盘次数从77变成了84

总结

从上面测试可以看出,profiler里面的writer 栏位 和官方的描述有出入。并不能代表实际的磁盘写入.所以如果磁盘有压力还需要从其他的是方法去排查。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z10843087/article/details/78122505

产品自动化测试的误区

一个实际案例N年前某大型通信设备公司的测试部门发起一场轰轰烈烈的测试转型运动,驱动转型的动力非常简单:人手太紧了,要释放人力,当时该部门有95%以上的测试精力都投入系统测试上,导致其它测试,比如组网测...
  • sundy_lee
  • sundy_lee
  • 2008-03-19 00:37:00
  • 605

做人工智能,先理解好这七大误区!

近几年,大数据、人工智能、AI等词已被媒体大肆宣传,让很多人赶鸭子上架也往这几个方面蹭一蹭,纷纷投入研发,但效果甚微,不禁让人产生疑问。人工智能真的如同媒体宣传那般神奇吗?今天大圣众包小编就为大家分享...
  • dashenghuahua
  • dashenghuahua
  • 2017-01-05 11:58:01
  • 707

延长FLASH和EEPROM芯片写入次数的小方法

开发电子产品时,常常需要断电后保存某些数据,这就需要使用FLASH或EEPROM芯片,这两种芯片,可擦除的次数是有限制的,通常FLASH为10万次,EEPROM要多一点,为100万甚至1000万次。F...
  • jxgxlm2008
  • jxgxlm2008
  • 2016-07-11 14:56:47
  • 5257

软件测试的几大误区

我们暂且不去评析软件测试在当今it公司中的地位,只说大家对软件测试的认识。基于我短暂的经验,我总结出软件测试几个最常见的误区,供大家研究:   一大误区:测试简单,对技术要求不高   这是对测试最...
  • xqtesting
  • xqtesting
  • 2014-07-25 12:37:11
  • 728

网站建设的十二大误区

  • 2010年07月29日 08:51
  • 35KB
  • 下载

需求调研的几个误区

软件系统的建设工作,大多数是从需求收集工作开始,逐一开展建设。需求调研,既是软件系统建设的头等大事,也是难点。很多失项目,由于走入需求调研工作的误区,导致项目失败。因此,本文就需求调研的几个主要误区展...
  • lejuo
  • lejuo
  • 2015-02-10 01:17:56
  • 1699

几个常见思维误区

有很多人大学毕业后,还是保持学习,这其实挺好的。但进入社会开始工作后,现在的学习跟大学时候的学习肯定是有区别的。最大的区别是,这个时候你所学的要用起来创造价值。 思维方式出问题 考场逻辑:我没有准...
  • luopeng123456789
  • luopeng123456789
  • 2015-10-14 15:58:27
  • 634

信息化建设误区

信息化建设,有益无害,合适最好。
  • zeroo_o
  • zeroo_o
  • 2014-01-08 11:32:40
  • 735

走出思维的误区.pdf

  • 2009年10月28日 23:56
  • 8.08MB
  • 下载

PgSQL · 特性分析 · full page write 机制

PG默认每个page的大小为8K,PG数据页写入是以page为单位,但是在断电等情况下,操作系统往往不能保证单个page原子地写入磁盘,这样就极有可能导致部分数据块只写到4K(操作系统是一般以4K为单...
  • jumewo
  • jumewo
  • 2015-11-26 09:47:14
  • 597
收藏助手
不良信息举报
您举报文章:关于writes写入次数的误区
举报原因:
原因补充:

(最多只允许输入30个字)