Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  / 15.20 InnoDB 内存缓存插件  / 15.20.6 为 InnoDB memcached 插件编写应用程序  /  14.21.5.2 为 InnoDB memcached 插件调整 memcached 应用程序

14.21.5.2 为 InnoDB memcached 插件调整 memcached 应用程序

InnoDB 在调整现有的memcached 应用程序以使用daemon_memcached 插件 时 ,请考虑 MySQL 和表的这些方面:

  • 如果有超过几个字节的键值,使用数字自增列作为表的 主键, 并 在包含memcached 键值的列上InnoDB创建唯一的 二级索引可能会更有效。这是因为 如果主键值按排序顺序添加(因为它们具有自动增量值),则最适合大规模插入。主键值包含在二级索引中,如果主键是一个长字符串值,这将占用不必要的空间。 InnoDB

  • 如果您使用 memcachedInnoDB存储多种不同类别的信息,请考虑为每种类型的数据设置一个单独的 表。在表中定义额外的表标识符 innodb_memcache.containers,并使用 符号来存储和检索来自不同表的项目。通过物理划分不同类型的信息,您可以调整每个表的特性以获得最佳空间利用率、性能和可靠性。例如,您可以启用 压缩@@table_id.key适用于包含博客文章的表,但不适用于包含缩略图的表。您可能比另一个表更频繁地备份一个表,因为它包含关键数据。您可以 在经常用于使用 SQL 生成报告的表上 创建额外的二级索引。

  • 最好配置一组稳定的表定义以与daemon_memcached插件一起使用,并永久保留表。对表的更改将 innodb_memcache.containers在下次查询表时生效 innodb_memcache.containers。containers 表中的条目在启动时处理,并在 containers.name使用表示法请求无法识别的表标识符(由 定义) 时查询@@。因此,只要您使用关联的表标识符,新条目就会可见,但对现有条目的更改需要重新启动服务器才能生效。

  • 当您使用默认缓存策略时,对、 、等的innodb_only 调用可以成功,但仍会触发调试消息,例如 。 由于缓存策略 ,新值和更新值直接发送到 表而没有保存在内存缓存中,因此会出现调试消息。add()set()incr()while expecting 'STORED', got unexpected response 'NOT_STOREDInnoDBinnodb_only