将MySQL复制到RAM作为一个穷人的memcachedreplace?

那么这个想法呢?

  • 我有一个4GB的MySQL数据库,只有几个更新。
  • 在系统启动时,我将它复制到RAM并从那里运行。
  • 每隔几个小时甚至更新,我都将其转储到磁盘。

…作为一种穷人的替代品,用于重新访问所有使用db的代码例程,并实现memcached或类似的。

使用只读从属设备的MEMORY存储引擎进行读取,正是您真正想要的和一个理智的设置。 忘记“倾销到磁盘”(?!)或其他奇怪的事情。

你甚至可以把奴隶作为另一个实例在你现有的服务器上,如果你不能设置一个专用的奴隶,但是正确地调整MySQL参数对于大部分读取工作量来说,也会带来显着的性能提升!

使用innodb引擎为你所有的表,在my.cnf中设置innodb_buffer_pool_size为2-3GB的ram,在启动期间运行全表扫描所有表[或者只是mysqldump -A]。 如果您在所有表格上都有好的索引,这应该会给您带来非常体面的只读性能。

同样,如果你使用这个解决scheme,你的代码将会更简单 – 你不需要关心从内存表重新同步到myisam /磁盘表。

在黑暗中射击,但你是否首先遇到性能问题?

其次,如果你有性能问题,你将不得不看看调整。 调整应用程序(如果你是开发者或开发者拥有扼杀权限)使用正确的查询,所以你不使用巨大的JOIN等。

然后看数据库体系结构。 制作愚蠢的解决方法将会使得后来pipe理更加麻烦。 你采取的步骤取决于你的使用情况。 你可能会考虑让一个强壮的服务器垂直扩展,然后把它放在一个memcached服务器之后,并创build一个只读的从服务器,例如运行报告和备份。

不要从数据库中拿走RAM来尝试一个颠覆良好实践的scheme。 有博客高性能的数据库调优可以给点子,并且StackOverflow播客博客有关这个网站如何运行(MS堆栈)的统计资料; stream量比较大,但不是一个复杂的设置。