mysql innodb:innodb_flush_method

Dan*_*iel 6 mysql innodb

在以下链接中

http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_flush_method

它说:这个变量的不同值可以对InnoDB性能产生显着影响.例如,在InnoDB数据和日志文件位于SAN上的某些系统上,已发现将innodb_flush_method设置为O_DIRECT会使简单SELECT语句的性能降低三倍.

为什么O_DIRECT会降低select语句的速度?

Mar*_*c B 6

O_DIRECT绕过操作系统的缓存系统.SAN可能是一个非常快速的存储系统,但通常它将通过网络链接在其他地方并代理/隐藏在各种其他层之后.通过使用消除本地缓存的O_DIRECT,您可以强制InnoDB每次都直接访问存储系统.

  • 当我们使用o_direct时,我们将使用几乎所有物理内存来缓存数据.所以看起来mysql文档假设我们浪费了一些空闲内存而没有将它们分配给mysql.如果我们不保留空闲物理内存,那么我认为o_direct对于select来说不会慢.好像块可以缓存在文件系统中,如果我们让mysql使用所有可用内存,那么很可能它也可以缓存在mysql缓冲区中. (2认同)