• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 为InnoDB memcached插件调整memcached应​​用程序

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

    • 如果有键值超过几个字节,它可能是更有效地使用数字自动增量列作为主键的的InnoDB表格,并创造了独特的二次指数在包含列memcached的键值。这是因为InnoDB如果按排序顺序添加主键值(与自动增量值一样),则在大规模插入时效果最佳。主键值包含在辅助索引中,如果主键为长字符串值,它将占用不必要的空间。
    • 如果使用memcached存储了几种不同的信息类别,请考虑InnoDB为每种数据类型设置一个单独的表。在innodb_memcache.containers表中定义其他表标识符,并使用该符号存储和检索不同表中的项目。从物理上划分不同类型的信息,您可以调整每个表的特性,以最佳地利用空间,提高性能和可靠性。例如,您可以启用压缩@@table_id.key用于保存博客文章的表,但不适用于保存缩略图的表。您可能比另一个表更频繁地备份一个表,因为它包含关键数据。您可能在经常使用SQL生成报告的表上创建其他二级索引。
    • 最好配置一组稳定的表定义,以供daemon_memcached插件使用,并将这些表永久保留在原位。对该innodb_memcache.containers表所做的更改将在下一次innodb_memcache.containers查询该表时生效。容器表中的条目将在启动时进行处理,每当containers.name使用@@符号请求无法识别的表标识符(由定义)时,便会进行查阅。因此,只要您使用关联的表标识符,就可以看到新条目,但是对现有条目的更改要求服务器重新启动才能生效。
    • 当您使用默认的innodb_only缓存策略,调用add()set()incr(),等能成功,但依旧会触发调试消息如while expecting 'STORED', got unexpected response 'NOT_STORED。发生调试消息是因为InnoDB由于innodb_only缓存策略的缘故,新值和更新值直接发送到表中,而没有保存在内存缓存中。