相关疑难解决方法(0)

澄清 MySQL innodb_flush_method 变量

首先让我承认我对硬盘的内部工作原理非常无知。因此,当我阅读变量innodb_flush_method的手册时,它让我感到困惑。我可以用外行的术语解释 O_DSYNC 和 O_DIRECT 的区别,以及如何知道这是否是数据库服务器上的性能问题。

我的设置的一些统计信息:运行 MySQL 5.1.49-64 位的 Mac OSX 10.6(32 位内核,因为架构已过时)(希望它能让我使用内存)。8GB RAM,~6GB innodb 数据/索引。

mysql innodb

22
推荐指数
1
解决办法
1万
查看次数

innodb_flush_method=O_DIRECT vs O_DSYNC 对带有 LVM 磁盘分区的 ext3 的性能影响

在我的一个生产环境中,我们有两个实例在 RedHat 集群上运行,其中一个生产实例与该集群关联。

我们有 125G 主内存,24G InnoDB 缓冲池被 instance1 占用,12G 被 instance2 占用,这与 RedHat 集群无关。数据和事务日志都位于具有 ext3 文件系统的 LVM 磁盘分区上。

为了提高性能和更好的 I/O 吞吐量,我决定更改innodb_flush_methodO_DIRECT.

参考 MySQL 文档:

InnoDB 数据和日志文件位于 SAN 上,我们发现设置innodb_flush_methodO_DIRECT会使简单SELECT语句的性能降低三倍。

提到高性能 MySQL Ver 2 和 3,它表示 InnoDB 开发人员发现使用innodb_flush_method=O_DSYNC. O_SYNCandO_DSYNC类似于fsync()and fdatasync()O_SYNC同步数据和元数据,而O_DSYNC只同步数据。

如果这一切看起来像是没有建议的很多解释,那么建议如下:

如果您使用类 Unix 操作系统并且您的 RAID 控制器具有电池供电的写入缓存,我们建议您使用O_DIRECT. 如果没有,O_DIRECT根据您的应用程序,默认值或可能是最佳选择。

通过谷歌搜索,我得到了这个基准报告:on O_DSYNCvsO_DIRECT

基准报告:
====================
1B …

mysql innodb performance mysql-5.1 redhat

14
推荐指数
2
解决办法
5万
查看次数

标签 统计

innodb ×2

mysql ×2

mysql-5.1 ×1

performance ×1

redhat ×1