关于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 栏位 和官方的描述有出入。并不能代表实际的磁盘写入.所以如果磁盘有压力还需要从其他的是方法去排查。
版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

软件项目管理中的十个误区 阅读笔记

随着计算机硬件水平的不断提高,计算机软件的规模和复杂度也随之增加。计算机软件开发从“个人英雄”时代向团队时代迈进,计算机软件项目的管理也从“作坊式”管理向“软件工厂式”管理迈进。这就要求软件开发人员特...
  • u010395804
  • u010395804
  • 2015年01月10日 12:17
  • 686

ERP实施过程中的误区 你知道吗?

当下,ERP管理系统越来越受到市场青睐,企业纷纷上马该系统来辅助企业发展。在传统的印刷领域上马ERP管理系统的印刷企业不在少数,一些效益好,发展快、有规模、有创新理念的企业希望通过ERP管理系统助推企...
  • zhongguomao
  • zhongguomao
  • 2015年08月15日 16:47
  • 396

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

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

如何改变Redis用不好的误区

一 首先是一个产品线开发人员搭建起了一套庞大的价格存储系统,底层是关系型数据库,只用来处理一些事务性的操作和存放一些基础数据; 在关系型数据库的上面还有一套MongoDB,因为Mong...
  • qq_40714902
  • qq_40714902
  • 2017年12月22日 23:19
  • 29

谈谈敏捷开发的误区

今天有人做演讲有关敏捷开发的。就演讲而言,讲得非常好,吐字清晰,语速适当,穿插例子,娓娓道来,将意思表达得非常清楚到位,是个很好的演讲。但就内容而言,我却有很大的异议,当中部分观点我认为是对敏捷开发的...
  • flowingflying
  • flowingflying
  • 2013年01月23日 23:12
  • 2583

菜鸟学设计模式(一)——小单例有大秘密

单例模式大家并不陌生,也都知道它分为什么懒汉式、饿汉式之类的。但是你对单例模式的理解足够透彻吗?今天我带大家一起来看看我眼中的单例,可能会跟你的认识有所不同。 下面是一个简单的小实例: //简单懒汉...
  • liushuijinger
  • liushuijinger
  • 2013年06月17日 08:58
  • 20183

实施ERP系统常见的误区

原文地址: http://bbs.erp100.com/thread-291622-1-1.html ERP项目成功实施为何困难重重? 一个企业的管理发展通常会经历这样几个历程:不规范,规范,标准...
  • wangnan537
  • wangnan537
  • 2015年06月23日 12:09
  • 1099

告诉你外语学习的真实方法及误区分析(精编版)

前 言   著名语言学家Greg Thomson说的:“外语学习的原理是如此之复杂,以至于没有人能说清楚;但掌握语言的过程又是如此之简单,以至于不需要说清楚。”讨论语言学习的原理,是件非常复杂的...
  • chengkaizone
  • chengkaizone
  • 2015年11月09日 20:22
  • 3353

性能测试新手误区(一):找不到测试点,不知为何而测

有过一些性能测试经验的人很容易进入此状态,他们已经熟悉了性能测试的基本流程,能够比较熟练的使用测试工具开展工作。我大概从事性能测试一年左右时遇到了这个问题,那时我觉得性能测试的过程没有太多挑战,遇到的...
  • Hjianhui24
  • Hjianhui24
  • 2016年01月21日 14:33
  • 185
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于writes写入次数的误区
举报原因:
原因补充:

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