1

MySQL中的memcache和缓冲池有什么区别?在我看来,两者都将内存用作缓冲区/缓存以减少磁盘 I/O。

谢谢!

4

1 回答 1

2

内存缓存

memcached 是一个简单的、高度可扩展的基于键的缓存,它可以在任何有专用或备用 RAM 可供应用程序快速访问的地方存储数据和对象,而无需经过层层解析或磁盘 I/O。要使用,您在一台或多台主机上运行 memcached 命令,然后使用共享缓存来存储对象。

InnoDB 缓冲池

保存表和索引的缓存 InnoDB 数据的内存区域。为了提高大容量读取操作的效率,缓冲池被划分为可能包含多行的页面。为了缓存管理的效率,缓冲池被实现为页链表;使用 LRU 算法的变体,很少使用的数据会从缓存中老化。在具有大内存的系统上,您可以通过将缓冲池划分为多个缓冲池实例来提高并发性。

几个 InnoDB 状态变量、information_schema表和performance_schema表有助于监控缓冲池的内部工作。从 MySQL 5.6 开始,您还可以在关闭和重启期间自动转储和恢复缓冲池的内容,或者随时手动通过一组 InnoDB 配置变量(例如innodb_buffer_pool_dump_at_shutdown和)来转储和恢复缓冲池的内容innodb_buffer_pool_load_at_startup

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

于 2013-11-08T04:17:42.157 回答