#### 15.20.6.2 为 InnoDB memcached 插件适配 memcached 应用程序

考虑 MySQL 的这些方面和`InnoDB`调整现有表时**内存缓存**应用程序使用`daemon_memcached`插入：

-   如果键值长于几个字节，则使用数字自增列作为[首要的关键](glossary.html#glos_primary_key)的`InnoDB`表，并创建一个独特的[二级索引](glossary.html#glos_secondary_index)在包含**内存缓存**关键值。这是因为`InnoDB`如果按排序顺序添加主键值（因为它们具有自动增量值），则在大规模插入时表现最佳。主键值包含在二级索引中，如果主键是长字符串值，则会占用不必要的空间。

-   如果您使用存储几个不同类别的信息**内存缓存**，考虑单独设置`InnoDB`每种数据类型的表格。在`innodb_memcache.containers`表，并使用`@@*`table_id`*.*`钥匙`*`符号来存储和检索来自不同表的项目。通过物理划分不同类型的信息，您可以调整每个表的特性，以实现最佳空间利用率、性能和可靠性。例如，您可以启用[压缩](glossary.html#glos_compression)对于包含博客文章的表格，但不适用于包含缩略图的表格。您可能会比另一个更频繁地备份一个表，因为它包含关键数据。您可以创建额外的[二级索引](glossary.html#glos_secondary_index)在经常使用 SQL 生成报告的表上。

-   最好配置一组稳定的表定义以用于**守护进程\_内存缓存**插件，并永久保留表格。的变化`innodb_memcache.containers`表下次生效`innodb_memcache.containers`表被查询。容器表中的条目在启动时被处理，并且每当一个无法识别的表标识符（如定义`容器名称`) 要求使用`@@`符号。因此，只要您使用关联的表标识符，新条目就可见，但对现有条目的更改需要重新启动服务器才能生效。

-   当你使用默认`innodb_only`缓存策略，调用`添加（）`,`放（）`,`增量（）`, 等可以成功但仍会触发调试消息，例如`在期待“STORED”时，得到了意外的响应“NOT_STORED”`.出现调试消息是因为新的和更新的值直接发送到`InnoDB`表没有被保存在内存缓存中，由于`innodb_only`缓存策略。
