10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册(TGZ)- 236.9 kb
手册(Zip)- 348.5 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

14.21.2 InnoDB memcached架构

InnoDBmemcached插件实现memcached作为MySQL插件守护进程访问InnoDB直接使用存储引擎,绕过MySQL SQL层。

下面的关系图说明了应用程序如何通过daemon_memcached与SQL相比。

图14.4 MySQL Server with Integratedmemcached服务器

展示了一个应用程序使用SQL和memcached协议访问InnoDB存储引擎中的数据。使用SQL,应用程序通过MySQL Server和Handler API访问数据。使用memcached协议,应用程序绕过MySQL服务器,通过memcached插件和InnoDB API访问数据。memcached插件由innodb_memcache接口和可选的本地缓存组成。

的特点daemon_memcached插件:

  • memcached作为daemon插件的mysqld.这两个mysqld而且memcached在相同的进程空间中运行,对数据的访问具有非常低的延迟。

  • 直接进入InnoDB表,绕过SQL解析器、优化器,甚至Handler API层。

  • 标准memcached协议,包括基于文本的协议和二进制协议。的daemon_memcached插件通过所有55个兼容性测试memcapable命令。

  • 多列支持。可以将多个列映射到价值键值存储的一部分,列值由用户指定的分隔符分隔。

  • 默认情况下,memcached协议用于直接对数据进行读写InnoDB,让MySQL使用InnoDB缓冲池.默认设置为数据库应用程序提供了高可靠性和最少意外的组合。例如,默认设置避免数据库端未提交数据,或在memcached得到请求。

  • 高级用户可以将系统配置为传统的memcached对象中缓存的所有数据memcached引擎(内存缓存),或使用的组合memcached引擎(内存缓存)和InnoDBmemcached引擎(InnoDB作为后端持久存储)。

  • 控制数据在两者之间来回传递的频率InnoDB而且memcached通过innodb_api_bk_commit_intervaldaemon_memcached_r_batch_size,daemon_memcached_w_batch_size配置选项。批处理大小选项默认值为1,以获得最大可靠性。

  • 指定的能力memcached可透过daemon_memcached_option配置参数。例如,您可以更改端口memcached监听,减少同时连接的最大数量,更改键值对的最大内存大小,或为错误日志启用调试消息。

  • innodb_api_trx_level配置选项控制事务隔离级别处理的查询memcached.虽然memcached没有任何概念交易,您可以使用此选项来控制快多久memcached控件使用的表上发出的SQL语句引起的更改daemon_memcached插件。默认情况下,innodb_api_trx_level设置为读未提交

  • innodb_api_enable_mdl选项可用于在MySQL级别锁定表,以便映射表不能被删除或修改DDL通过SQL接口。如果没有锁,表可以从MySQL层删除,但保留在其中InnoDB存储到memcached或者其他用户停止使用它。MDL代表元数据锁定

InnoDB memcached与传统memcached的区别

你可能已经熟悉使用memcached使用MySQL,如使用MySQLmemcached.本节介绍如何集成特性InnoDBmemcached插件与传统插件不同memcached

  • 安装:memcachedMySQL服务器自带MySQL库,使安装和设置相对容易。安装包括运行innodb_memcached_config.sql创建一个demo_testmemcached使用,发出安装插件语句来启用daemon_memcached插件,并添加所需的memcached选项到MySQL配置文件或启动脚本。你可能还是会安装传统的memcached用于其他公用事业的分布,例如memcpmemcat,memcapable

    与传统的相比memcached,请参阅安装memcached

  • 部署:使用传统的memcached,通常会运行大量低容量的程序memcached服务器。的典型部署daemon_memcached插件,然而,涉及少数中等或高功率的服务器已经运行MySQL。这种配置的好处是提高了单个数据库服务器的效率,而不是利用未使用的内存或在大量服务器之间分发查找。在默认配置中,使用的内存很少memcached的方法提供内存中查找InnoDB缓冲池,它会自动缓存最近和经常使用的数据。与传统的MySQL服务器实例一样,保持通过innodb_buffer_pool_size配置选项尽可能高(不会在操作系统级别引起分页),以便尽可能多的工作在内存中执行。

    与传统的相比memcached,请参阅memcached部署

  • 过期:默认情况下(即使用innodb_only缓存策略),从的最新数据InnoDB表总是返回,因此过期选项没有实际效果。如果将缓存策略更改为缓存cache_only时,过期选项照常工作,但如果请求的数据在从内存缓存中过期之前在基础表中进行了更新,则可能会过期。

    与传统的相比memcached,请参阅数据到期

  • 名称空间:memcached类似于一个大的目录,在其中为文件提供带有前缀和后缀的详细名称,以防止文件冲突。的daemon_memcachedPlugin允许您使用类似的键的命名约定,只需要增加一个。格式中的键名@@table_id关键table_id的映射数据被解码为引用特定的表innodb_memcache.containers表格的关键在指定表中查找或写入。

    @@符号只适用于对的单个调用得到添加,函数,而不是其他函数,如增加删除.为后续表指定一个默认表memcached会话内的操作,执行a得到使用@@有a的符号table_id,但没有关键部分。例如:

    得到@@table_id

    后续得到增加删除,其他操作使用table_idinnodb_memcache.containers.name列。

    与传统的相比memcached,请参阅使用名称空间

  • 散列和分布:默认配置,它使用innodb_only缓存策略,适用于传统部署配置,其中所有数据都可在所有服务器上使用,例如一组副本服务器。

    如果物理上划分数据(如在分片配置中),则可以在运行daemon_memcached插件,并使用传统的memcached哈希机制将请求路由到特定的机器。在MySQL端,您通常会让所有数据被插入添加请求memcached以便将适当的值存储在适当的服务器上的数据库中。

    与传统的相比memcached,请参阅memcached散列/分布类型

  • 内存使用情况:默认情况下(使用innodb_only缓存策略)、memcached协议来回传递信息InnoDB表和InnoDB缓冲池处理内存中的查找,而不是memcached内存使用在增加和减少。上使用的内存相对较少memcached的一面。

    如果将缓存策略切换为缓存cache_only的正常规则memcached应用内存使用率。内存memcached数据值按.您可以控制板大小和用于的最大内存memcached

    的任何一种方式,都可以监视和排除故障daemon_memcached插件使用熟悉的统计数据系统,通过标准协议访问,通过远程登录例如,Session。类中不包括额外的实用程序daemon_memcached插件。您可以使用memcached-tool脚本要安装完整的memcached分布。

    与传统的相比memcached,请参阅内部内存分配memcached

  • 线程使用:MySQL线程和memcached线程共存于同一服务器上。操作系统对线程施加的限制适用于线程总数。

    与传统的相比memcached,请参阅memcached线程的支持

  • 日志使用:因为memcached守护进程在MySQL服务器旁边运行并写入stderr,- vvv,-vvv选项记录写输出到MySQL错误日志

    与传统的相比memcached,请参阅memcached日志

  • memcached熟悉操作:memcached操作如得到添加,删除是可用的。序列化(即,表示复杂数据结构的确切字符串格式)取决于语言接口。

    与传统的相比memcached,请参阅基本memcached操作

  • 使用memcached作为MySQL前端:这是InnoDBmemcached插件。一个集成memcachedDaemon可以提高应用程序的性能,并且具有InnoDB处理内存和磁盘之间的数据传输简化了应用程序逻辑。

    与传统的相比memcached,请参阅使用memcached作为MySQL缓存层

  • 实用程序:MySQL服务器包括libmemcached库,而不是附加的命令行实用程序。使用命令,例如memcpmemcat,memcapable命令,安装完整memcached分布。当memrm而且memflush从缓存中删除项,项也将从底层中删除InnoDB表格

    与传统的相比memcached,请参阅libmemcached命令行实用工具

  • 编程接口:可以通过daemon_memcached插件使用所有支持的语言:C和c++JavaPerlPython,PHP.指定服务器主机名和端口memcached服务器。默认情况下,daemon_memcached插件监听端口11211.你可以使用文本和二进制协议.您可以自定义行为memcached函数在运行时。序列化(即,表示复杂数据结构的确切字符串格式)取决于语言接口。

    与传统的相比memcached,请参阅开发一个memcached应用程序

  • 常见问题:MySQL有大量传统的常见问题解答memcached.常见问题解答大部分都适用,除了使用InnoDB表作为存储介质memcached数据意味着你可以使用memcached用于比以前写密集型的应用程序,而不是作为只读缓存。

    看到memcached常见问题解答