MySQL 5.5 InnoDB 是否在内存中保留索引而在磁盘上保留表?它是否曾经对部分或整个表进行过自己的内存缓存?或者它是否完全依赖于操作系统页面缓存(我猜它确实如此,因为 Facebook 为 MySQL 构建的 SSD 缓存是在操作系统级别完成的:https ://github.com/facebook/flashcache/ )?默认情况下,Linux 是否将所有可用的 RAM 用于页面缓存?因此,如果 RAM 大小超过表大小 + 进程使用的内存,那么当 MySQL 服务器启动并第一次读取整个表时,它将从磁盘读取,从那时起整个表都在 RAM 中?所以使用 Alchemy 数据库(Redis 之上的 SQL,一切都在 RAM 中:http ://code.google.com/p/alchemydatabase/) 应该不会比 MySQL 快很多,给定相同大小的 RAM 和数据库?
阅读 innodb_buffer_pool_size。
这就是您告诉 innodb 保留多少 RAM 用于缓存的方式。(不使用操作系统页面缓存)
MySQL 5.5 文档 - http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html
一个不错的博客 - http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
将 Flashcache 视为位于 HDD 前面的 L1 SSD 缓存。
我不能说 Redis 与 MySQL 的性能,但 MySQL 在处理语句、ACID 合规性等方面确实有其他性能开销......
如果您都在 RAM 中,那么在任何系统上的性能都将是“良好”的。