14.21.1 InnoDB 内存缓存插件的好处
本节概述了daemon_memcached
插件的优点。 InnoDB
table 和 memcached 的组合提供了优于单独使用的优势。
-
直接访问
InnoDB
存储引擎避免了 SQL 的解析和计划开销。 -
在与 MySQL 服务器相同的进程空间中运行 memcached 可以避免来回传递请求的网络开销。
-
使用 memcached 协议写入的数据透明地写入
InnoDB
table,而无需通过 MySQL SQL 层。更新非关键数据时,您可以控制写入频率以获得更高的原始性能。 -
通过 memcached 协议请求的数据从
InnoDB
table 中透明查询,而无需通过 MySQL SQL 层。 -
InnoDB
缓冲池将为随后的相同数据请求提供服务。缓冲池处理内存中的缓存。您可以使用InnoDB
配置选项来调整数据密集型操作的性能。 -
数据可以是非结构化的或结构化的,具体取决于应用程序的类型。您可以为数据创建新 table,也可以使用现有 table。
-
InnoDB
可以处理将多个列值组合和分解为单个 memcached 项值,从而减少了应用程序中所需的字符串解析和连接数量。例如,您可以将字符串值2|4|6|8
存储在 memcached 高速缓存中,并让InnoDB
根据分隔符拆分该值,然后将结果存储在四个数字列中。 -
内存和磁盘之间的传输是自动处理的,从而简化了应用程序逻辑。
-
数据存储在 MySQL 数据库中,以防止崩溃,中断和损坏。
-
您可以通过 SQL 访问基础
InnoDB
table,以进行报告,分析,临时查询,批量加载,多步事务计算,集合操作(例如并集和交集)以及其他适合 SQLtable 示性和灵 Active 的操作。 -
通过将源服务器上的
daemon_memcached
插件与 MySQL 复制结合使用,可以确保高可用性。 -
memcached 与 MySQL 的集成提供了一种使内存中的数据持久化的方法,因此您可以将其用于更重要的数据类型。您可以在应用程序中使用更多的
add
,incr
和类似的写操作,而不必担心数据会丢失。您可以停止并启动 memcached 服务器,而不会丢失对缓存数据所做的更新。为了防止意外中断,您可以利用InnoDB
崩溃恢复,复制和备份功能。 -
InnoDB
快速primary key查找的方式自然适用于 memcached 单项查询。daemon_memcached
插件使用的直接,低级数据库访问路径比等效的 SQL 查询对键值查找更有效。 -
memcached 的序列化功能可以将复杂的数据结构,二进制文件甚至代码块转换为可存储的字符串,提供了一种将此类对象导入数据库的简单方法。
-
因为您可以通过 SQL 访问基础数据,所以您可以生成报告,跨多个键搜索或更新,以及对 memcached 数据调用诸如
AVG()
和MAX()
之类的功能。单独使用 memcached ,所有这些操作都是昂贵或复杂的。 -
您无需在启动时手动将数据加载到 memcached 中。当应用程序请求特定的键时,将自动从数据库中检索值,并使用
InnoDB
buffer pool将其缓存在内存中。 -
由于 memcached 消耗的 CPU 相对较少,并且其内存占用空间易于控制,因此可以与 MySQL 实例在同一系统上舒适地运行。
-
由于数据的一致性是由用于常规
InnoDB
table 的机制来强制执行的,因此您不必担心过时的 memcached 数据或回退逻辑在缺少键的情况下查询数据库。