【问题标题】:Memcache vs Buffer Pool in MySQLMySQL 中的 Memcache 与缓冲池
【发布时间】:2013-11-19 23:36:37
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: mysql database buffer memcachedb


    【解决方案1】:

    内存缓存

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

    InnoDB 缓冲池

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

    几个 InnoDB 状态变量、information_schema 表和performance_schema 表有助于监控缓冲池的内部工作。从 MySQL 5.6 开始,您还可以通过一组 InnoDB 配置变量(例如 innodb_buffer_pool_dump_at_shutdowninnodb_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

    【讨论】:

    • 那么有没有将查询分派到内存缓存或缓冲池的管理器? (当然,如果错过所有查询都将转到磁盘)。谢谢。另外,使用 memcache 有什么意义? memcache he 和 buffer pool 都是内存。为什么我不将所有内存用于缓冲池?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2019-05-24
    • 2011-01-27
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多