在 Centos 7.8 上将 innodb_flush_method 设置为 O_DIRECT

Setting innodb_flush_method to O_DIRECT on Centos 7.8

我读到您应该在 MySQL 中将 innodb_flush_method 设置为 O_DIRECT 以避免双重缓冲。我还读到您不应该将 tmpfs 用于 tmpdir,因为那样会禁用 AIO。

在研究这些声明时,我发现 Centos 自动在 tmpdir 上附带了 tmpfs。我读到这会与 O_DIRECT.

产生冲突

一个建议的解决方案是更改 MySQL 的临时文件夹,以便您可以使用本机 AIO 并避免双缓冲。

关于双缓冲的说法是否正确?

或者您是否应该不设置 innodb_flush_method 并让 tmpdir 成为 tmpfs 的默认目录?

将innodb_flush_method设置为O_DIRECT(否则您将通过双重缓存搅动页面缓存)。我不认为在 tmpfs 上设置 tmpdir=/tmp 会完全禁用 MySQL 的 aio,但如果确实如此,您最好在常规文件系统上制作 /tmp。