在 RAMDisk 上运行 MySQL

iva*_*one 5 mysql innodb ramdisk

我正在加速用于MySQL持久性的测试套件。datadir我已将和更改tmpdirmy.cnf使用 RAMDisk,如下所示。

datadir         = /run/shm/mysql
tmpdir          = /run/shm/mysqltemp
Run Code Online (Sandbox Code Playgroud)

问题是,每次我运行整个测试套件时,当测试尝试删除某些行作为正在测试的功能的一部分时,有时我会遇到外键约束违规。奇怪的是,当我不在 RAMDisk 上运行 MySQL 或当我保留datadir默认设置/var/lib/mysql/但仅更改tmpdir. 我想使用datadirRAM 运行测试,因为我注意到这样做时清理逻辑非常快。

有人可以帮助指出我在这里可能做错了什么吗?

Adr*_*ček 3

你确定你有足够的 RAM 来运行 MySQL 吗?另外,不建议在 RAMDISK 上运行 MySQL。

说到优化。您应该使用 MEMORY 类型的数据存储,当然也可以在 SSD 上运行它。HDD/SSD 之间的主要区别是 I/O 等待时间,这就是为什么现在有这么多服务器使用 REDIS 等内存(缓存)数据库。

研究一下,祝优化好运。

  • 感谢您的帮助。我没有在生产环境中的 RAMDisk 上运行 MySQL,它只是为了测试以及拥有更快的测试套件的目标。在 MEMORY 类型的数据存储上,我真的不想使用它,因为我希望测试在尽可能接近我使用 InnoDb 的生产环境的配置中运行。我也已经在使用SSD了。在没有我在问题中谈到的任何优化的情况下,该套件花费了超过 11 个小时,而当我只将 tmpdir 更改为 RAMDisk 时,该套件花费了大约 3 个小时 (6认同)