【发布时间】:2013-11-19 23:36:37
【问题描述】:
MySQL中的memcache和缓冲池有什么区别? 在我看来,两者都将内存用作缓冲区/缓存以减少磁盘 I/O。
谢谢!
【问题讨论】:
标签: mysql database buffer memcachedb
MySQL中的memcache和缓冲池有什么区别? 在我看来,两者都将内存用作缓冲区/缓存以减少磁盘 I/O。
谢谢!
【问题讨论】:
标签: mysql database buffer memcachedb
内存缓存
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
有关内存缓存的更多信息,请参阅: http://dev.mysql.com/doc/refman/5.0/en/ha-memcached-using.html
【讨论】: