MySQL中的memcache和缓冲池有什么区别? 在我看来,两者都使用内存作为缓冲区/缓存,以减少磁盘I / O.
谢谢!
答案 0 :(得分:1)
<强>内存缓存强>
memcached是一个简单,高度可扩展的基于密钥的缓存,可以在专用或备用RAM可供应用程序快速访问的任何地方存储数据和对象,而无需经过分析或磁盘I / O层。要使用,请在一个或多个主机上运行memcached命令,然后使用共享缓存来存储对象。
InnoDB缓冲池
保存表和索引的缓存InnoDB数据的内存区域。为了提高大容量读取操作的效率,缓冲池被分成可以容纳多行的页面。为了提高缓存管理的效率,缓冲池被实现为链接的页面列表;使用LRU算法的变体,很少使用的数据在缓存中老化。在具有大内存的系统上,可以通过将缓冲池划分为多个缓冲池实例来提高并发性。
多个InnoDB状态变量,information_schema
表和performance_schema
表有助于监视缓冲池的内部工作。从MySQL 5.6开始,您还可以通过一组InnoDB配置变量(如innodb_buffer_pool_dump_at_shutdown
和{{1})在关机和重启期间自动转储和恢复缓冲池的内容,也可以随时手动转储和恢复缓冲池的内容。 }。
Memcache与InnoDB集成
MySQL 5.6包含一个NoSQL接口,使用集成的memcached守护程序,可以自动存储数据并从InnoDB表中检索数据,将MySQL服务器变成一个快速的“键值存储”,用于单行插入,更新或删除操作。您还可以通过SQL访问相同的表,以方便,复杂查询,批量操作,应用程序兼容性以及传统数据库软件的其他优势。
http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-benefits.html
http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached.html
有关memcache的更多信息,请参阅: http://dev.mysql.com/doc/refman/5.0/en/ha-memcached-using.html