在MySQL中,memcache和缓冲池有什么区别?在我看来,两者都使用内存作为缓冲区/缓存,以减少磁盘I/O。
谢谢!
发布于 2013-11-08 04:17:42
Memcache
memcached是一个简单的、高度可伸缩的基于密钥的缓存,它存储数据和对象,无论是专用RAM还是备用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
https://stackoverflow.com/questions/19850939
复制相似问题