10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

15.20.6.4控制InnoDB memcached插件的事务行为

与传统的memcached,daemon_memcached插件允许你控制通过调用产生的数据值的持久性添加增加,等等。默认情况下,通过memcached接口存储到磁盘,并调用得到从磁盘返回最近的值。虽然默认行为没有提供最好的原始性能,但与SQL接口相比,它仍然很快InnoDB表。

当你获得使用的经验时daemon_memcached插件中,你可以考虑放松非关键类数据的持久性设置,冒着在宕机事件中丢失一些更新值的风险,或者返回略过时的数据。

提交的频率

持久性和原始性能之间的一个权衡是新数据和更改数据的频率承诺.如果数据是关键的,应该立即提交,以便在意外退出或中断的情况下保持安全。如果数据不那么关键,比如在意外退出后重置的计数器或可以损失的日志数据,那么您可能更喜欢提交频率较低的高原始吞吐量。

当一个memcached操作在底层中插入、更新或删除数据InnoDB表中,更改可能提交到InnoDB立即表(如果daemon_memcached_w_batch_size = 1)或一段时间后(如果daemon_memcached_w_batch_size值大于1)。在这两种情况下,更改都不能回滚。的值daemon_memcached_w_batch_size为了避免繁忙期间的高I/O开销,在工作负载减少时提交可能会变得不频繁。作为一种安全措施,后台线程自动提交通过memcachedAPI。控件控制间隔innodb_api_bk_commit_interval配置选项,该选项的默认设置为5秒。

当一个memcached操作在底层中插入或更新数据InnoDB表中,更改的数据立即对其他人可见memcached请求,因为新值仍然在内存缓存中,即使它还没有在MySQL端提交。

事务隔离

当一个memcached操作如得到增加在底层上引起查询或DML操作InnoDB表中,您可以控制操作是看到写入表的最新数据,还是只看到已提交的数据,还是看到事务的其他变体隔离级别.使用innodb_api_trx_level控制此功能的配置选项。为此选项指定的数值对应于隔离级别,例如可重复读取.的描述innodb_api_trx_level有关其他设置的信息的选项。

严格的隔离级别可确保检索的数据不会回滚或突然更改,从而导致后续查询返回不同的值。然而,严格的隔离级别要求更高锁定开销,这会导致等待。对于不使用长时间运行事务的nosql风格应用程序,通常可以使用默认隔离级别或切换到不太严格的隔离级别。

禁用memcached DML操作的行锁

innodb_api_disable_rowlock选项可用于在以下情况禁用行锁memcached请求通过daemon_memcached插件导致DML操作。默认情况下,innodb_api_disable_rowlock被设置为这意味着memcached请求行锁得到而且操作。当innodb_api_disable_rowlock被设置为memcached请求一个表锁而不是行锁。

innodb_api_disable_rowlock选项不是动态的。的启动时必须指定mysqld或者在MySQL配置文件中输入。

允许或禁止DDL

缺省情况下,可以执行DDL操作,比如ALTER TABLE在桌子上使用daemon_memcached插件。当这些表用于高吞吐量应用程序时,为了避免潜在的减速,可以通过启用禁用这些表上的DDL操作innodb_api_enable_mdl在启动。当通过两者访问相同的表时,此选项不太合适memcached和SQL,因为它阻塞创建索引表上的语句,这对于运行报告查询可能很重要。

将数据存储在磁盘、内存或两者中

innodb_memcache.cache_policies表指定是否存储通过memcached磁盘接口(innodb_only,默认的);只在内存中,和传统的一样memcachedcache_only);或两个(缓存).

缓存设置,如果memcached在内存中找不到键,它将在InnoDB表格返回值从得到下电话缓存控件中的磁盘上更新的值可能已过时InnoDB表中未过期的数据。

缓存策略可以独立设置得到(包括增加而且12月),删除,冲洗操作。

例如,你可能会允许得到而且操作来查询或更新表和memcached内存缓存的同时(使用缓存设置),而制作删除冲洗,或者两者都只操作内存中的副本(使用cache_only设置)。这样,删除或刷新项只会使该项从缓存中过期,而最新的值将从InnoDB在下一次请求该项时将其列在表中。

SELECT * FROM innodb_memcache.cache_policies;+--------------+-------------+-------------+---------------+--------------+ | policy_name | get_policy | set_policy | delete_policy | flush_policy  | +--------------+-------------+-------------+---------------+--------------+ | cache_policy | innodb_only | innodb_only | innodb_only | innodb_only  | +--------------+-------------+-------------+---------------+--------------+ mysql >更新innodb_memcache。SET set_policy = 'cache ' WHERE policy_name = 'cache_policy';

innodb_memcache.cache_policies值只在启动时读取。更改该表中的值后,卸载并重新安装daemon_memcached插件,以确保更改生效。

mysql>卸载插件mysql>安装插件daemon_memcached soname“libmemcached.so”;