### 15.20.1 InnoDB memcached 插件的好处

本节概述了优点`daemon_memcached`插入。的组合`InnoDB`表和**内存缓存**比单独使用任何一个都具有优势。

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

-   跑步**内存缓存**在与 MySQL 服务器相同的进程空间中，避免了来回传递请求的网络开销。

-   使用写入的数据**内存缓存**协议被透明地写入`InnoDB`表，无需通过 MySQL SQL 层。您可以控制写入频率以在更新非关键数据时获得更高的原始性能。

-   通过请求的数据**内存缓存**协议是透明地从`InnoDB`表，无需通过 MySQL SQL 层。

-   对相同数据的后续请求由`InnoDB`缓冲池。缓冲池处理内存中的缓存。您可以使用以下方法调整数据密集型操作的性能`InnoDB`配置选项。

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

-   `InnoDB`可以处理将多个列值组合和分解为一个**内存缓存**item 值，减少应用程序中所需的字符串解析和连接量。例如，您可以存储字符串值`2|4|6|8`在里面**内存缓存**缓存，并拥有`InnoDB`根据分隔符拆分值，然后将结果存储在四个数字列中。

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

-   数据存储在 MySQL 数据库中，以防止崩溃、中断和损坏。

-   您可以访问底层`InnoDB`表通过 SQL 进行报告、分析、即席查询、批量加载、多步事务计算、联合和交集等集合操作以及适合 SQL 的表达性和灵活性的其他操作。

-   您可以通过使用`daemon_memcached`源服务器上的插件与 MySQL 复制相结合。

-   的整合**内存缓存**MySQL 提供了一种使内存数据持久化的方法，因此您可以将其用于更重要的数据类型。你可以使用更多`添加`,`增量`，以及应用程序中的类似写入操作，无需担心数据可能会丢失。您可以停止和启动**内存缓存**服务器，而不会丢失对缓存数据所做的更新。为了防止意外中断，您可以利用`InnoDB`崩溃恢复、复制和备份功能。

-   方式`InnoDB`做的很快[首要的关键](glossary.html#glos_primary_key)查找自然适合**内存缓存**单项查询。使用的直接、低级数据库访问路径`daemon_memcached`插件对于键值查找比等效的 SQL 查询更有效。

-   序列化特征**内存缓存**，它可以将复杂的数据结构、二进制文件甚至代码块转换为可存储的字符串，提供了一种将此类对象放入数据库的简单方法。

-   因为可以通过SQL访问底层数据，所以可以生成报表，跨多个key进行搜索或更新，调用函数如`平均（）`和`最大限度（）`在**内存缓存**数据。所有这些操作都是昂贵或复杂的**内存缓存**通过它自己。

-   您无需手动将数据加载到**内存缓存**在启动时。当应用程序请求特定键时，会自动从数据库中检索值，并使用`InnoDB` [缓冲池](glossary.html#glos_buffer_pool).

-   因为**内存缓存**CPU消耗相对较少，内存占用容易控制，可以在同一系统上与MySQL实例一起舒适地运行。

-   因为数据一致性是由用于常规的机制强制执行的`InnoDB`表，您不必担心陈旧**内存缓存**在缺少键的情况下查询数据库的数据或回退逻辑。
