嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

在使用mysql的时候,经常出现问题就是这个问题。

记录以备参考。

提问了 2016-06-27 09:43:58

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%


  当读取一个记录的时候首先回去buffer cache里面去寻找是否有对应的记录,如果有对应的记录的会就直接读出,这样就产生了一次逻辑读的操作。buffer cache中的数据都是由“latch”来保护的,因此逻辑读的过程中需要不停地申请“latch”,而在申请和释放“latch”和读取数据都是需要耗费CPU的,因此逻辑读对于CPU的负载较高。



   若没有在buffer cache里面查看到该记录,就需要到数据文件中查看,由此便产生了物理读的情况。而物理读会产生逻辑写和逻辑读,当用户的物理读的数量增加后就会导致IOPS的增长;另外,如果内存使用量过多的话,buffer cache会将其中的脏块刷回数据文件,同样也会导致IOPS的升高。

  同样,写数据时并非直接写到数据文件里面,而是先写在buffer cache里,之后再根据buffer cache的lazy write机制和checkpoint机制写回到数据文件中,这种情况也将导致IOPS的升高。
永久链接

已回答 2016-06-27 09:52:18

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%

简单来说就是一句话:

查询会走硬盘读取数据,导致iops增大。

永久链接

已回答 2016-06-27 09:58:27

jkant's gravatar image

jkant ♦♦
11130137138
采纳率: 3%

你的回答
切换预览

关注这个问题

邮件:

登录之后,你可以在这里订阅任何更新。

RSS:

回答

回答和评论

Markdown基本语法

  • *italic* or _italic_
  • **bold** or __bold__
  • 链接:[文本](http://url.com/ "标题")
  • 图片?![alt 文本](/path/img.jpg "标题")
  • 编号列表: 1. Foo 2. Bar
  • 如果想要换行,只需要在前一行结尾处插入2个空格即可。
  • 支持基本HTML标记

问题标签:

×72
×1

已提出的问题: 2016-06-27 09:43:58

问题浏览量: 1,693 次

最后更新: 2016-06-27 09:58:27