如何避免 ramdisk 上的磁盘空间不足?

Dav*_*vid 1 mysql linux ramdisk

我正在考虑将我的 MySQL 数据库tempdir 放在Linux 下的 ramdisk上。这样做的原因是为了解决MySQL 中最大 4 GB 的内存中临时表。我唯一担心的是,如果 ramdisk 上基于 MyISAM 的临时表会变得比 ramdisk 大,如何避免磁盘空间不足错误?可以通过某种方式创建一种溢出机制,其中 ramdisk 大小是 ramdisk 的大小加上硬盘上的可用空间。如果 ramdisk 已满,则其余部分将写入硬盘。

vor*_*aq7 7

从逻辑上考虑这一点,并忽略它是一个 RAM 支持的虚拟磁盘这一事实:您要求磁盘设备变得更大,因为您试图在其上存储更多内容。

你要的是一个祝福的 +30袋子
你要求一个Dimensional Hole
您要的是TARDIS(“里面更大”)。

你要求的东西不存在。至少不是我见过的...


对临时表使用 tmpfs/RAM 支持的存储是绕过 4GB 限制的一种非常优雅的方式。请注意,尽管您锁定的 RAM 将无法用于 MySQL 来执行SORTing、JOINing 等操作,因此您将需要 GOBS 的 RAM 以使其实用 - 您需要 tmpfs 足够大以保存任何时候需要的尽可能多的临时表(可能很大),并且您仍然需要有足够的 RAM,以便在运行大型查询时不会交换(否则您的性能会下降)无论如何都要从管子里下来,因为必须要换入和换出某些东西!)。

更实用的解决方案可能是巧妙地制作显式(且高效)的JOINs 以消除对临时表的需求(如果可能),并将它们保存为视图。在不了解您的环境的情况下,我无法为您提供具体指导,但是您可以随时在DBA 站点上询问有关您正在做什么的一些基本细节,看看他们是否有建议...

(我很抱歉成为坏消息的承载者,但如果它值得的话,我确实很高兴输入这个答案。)