14.21.1 InnoDB 内存缓存插件的好处

本节概述了daemon_memcached插件的优点。 InnoDBtable 和 memcached 的组合提供了优于单独使用的优势。

  • 直接访问InnoDB存储引擎避免了 SQL 的解析和计划开销。

  • 在与 MySQL 服务器相同的进程空间中运行 memcached 可以避免来回传递请求的网络开销。

  • 使用 memcached 协议写入的数据透明地写入InnoDBtable,而无需通过 MySQL SQL 层。更新非关键数据时,您可以控制写入频率以获得更高的原始性能。

  • 通过 memcached 协议请求的数据从InnoDBtable 中透明查询,而无需通过 MySQL SQL 层。

  • InnoDB缓冲池将为随后的相同数据请求提供服务。缓冲池处理内存中的缓存。您可以使用InnoDB配置选项来调整数据密集型操作的性能。

  • 数据可以是非结构化的或结构化的,具体取决于应用程序的类型。您可以为数据创建新 table,也可以使用现有 table。

  • InnoDB可以处理将多个列值组合和分解为单个 memcached 项值,从而减少了应用程序中所需的字符串解析和连接数量。例如,您可以将字符串值2|4|6|8存储在 memcached 高速缓存中,并让InnoDB根据分隔符拆分该值,然后将结果存储在四个数字列中。

  • 内存和磁盘之间的传输是自动处理的,从而简化了应用程序逻辑。

  • 数据存储在 MySQL 数据库中,以防止崩溃,中断和损坏。

  • 您可以通过 SQL 访问基础InnoDBtable,以进行报告,分析,临时查询,批量加载,多步事务计算,集合操作(例如并集和交集)以及其他适合 SQLtable 示性和灵 Active 的操作。

  • 通过将源服务器上的daemon_memcached插件与 MySQL 复制结合使用,可以确保高可用性。

  • memcached 与 MySQL 的集成提供了一种使内存中的数据持久化的方法,因此您可以将其用于更重要的数据类型。您可以在应用程序中使用更多的addincr和类似的写操作,而不必担心数据会丢失。您可以停止并启动 memcached 服务器,而不会丢失对缓存数据所做的更新。为了防止意外中断,您可以利用InnoDB崩溃恢复,复制和备份功能。

  • InnoDB快速primary key查找的方式自然适用于 memcached 单项查询。 daemon_memcached插件使用的直接,低级数据库访问路径比等效的 SQL 查询对键值查找更有效。

  • memcached 的序列化功能可以将复杂的数据结构,二进制文件甚至代码块转换为可存储的字符串,提供了一种将此类对象导入数据库的简单方法。

  • 因为您可以通过 SQL 访问基础数据,所以您可以生成报告,跨多个键搜索或更新,以及对 memcached 数据调用诸如AVG()MAX()之类的功能。单独使用 memcached ,所有这些操作都是昂贵或复杂的。

  • 您无需在启动时手动将数据加载到 memcached 中。当应用程序请求特定的键时,将自动从数据库中检索值,并使用InnoDB buffer pool将其缓存在内存中。

  • 由于 memcached 消耗的 CPU 相对较少,并且其内存占用空间易于控制,因此可以与 MySQL 实例在同一系统上舒适地运行。

  • 由于数据的一致性是由用于常规InnoDBtable 的机制来强制执行的,因此您不必担心过时的 memcached 数据或回退逻辑在缺少键的情况下查询数据库。