目前,我们有一个网站在 Centos 6.5 网络服务器上运行,具有直接管理功能。APC 是在过去配置的并且运行良好,但一些阅读建议还实现 memcached 来缓存一些静态表(例如菜单)。
从 MySQL 5.6 开始,innoDB 表与 mysql memcache 守护进程兼容,因此我开始遵循本指南: http: //dev.mysql.com/doc/refman/5.6/en/innodb-memcached-installing.html。运行配置脚本并安装守护程序。
然而,Drupal memcache 插件看不到 memcache 正在运行。该模块显然正在检查 php memcached 守护进程,而我的守护进程已经在 mysql 中运行。
由于两个扩展都被称为memcached.so,我们强烈地感觉到这是同一件事。实际上是否有两个不同的事情,Drupal 是否不支持 InnoDB memcached 守护进程,我是否需要两者(php 扩展来访问 mysql 扩展?),或者这应该有效,我们是不是出了什么问题?
更新
状态报告显示类似“未运行”的内容,但我的一位同事现在已经安装了 PHP PECL 扩展,并且它似乎正在工作。但后来我还是不明白MySQL innodb deamon插件是做什么的。是否不需要,或者它是否比 PHP 扩展更能改善数据库访问?
Memcached 与 InnoDB 的接口是 MySQL 的一项功能,支持 memcached 协议,但以 InnoDB 作为后端存储。看来很多人都对这意味着什么感到困惑,所以我会尝试解释一下。
真正的 memcached 守护进程将数据存储在内存中,而 MySQL 将数据持久存储在 InnoDB 表中。PHP 应用程序可以使用 memcached 扩展读取和写入数据,就像使用标准 memcached 内存存储一样。然而,它们实际上是从 InnoDB 表中读取和写入行。
这比标准 memcached 慢一些,因为它写入磁盘的开销大于访问内存的开销。但它比使用 SQL 读取和写入这些行要快一些,因为它跳过了 SQL 解析器和查询优化器的复杂性。
这确实是 MySQL 中的新功能:绕过 SQL,并通过简单但熟悉的界面直接访问 InnoDB 存储引擎。他们选择 memcached 的理由是,许多开发人员都会熟悉它,并且已经拥有对其的工具和语言支持。
InnoDB memcached 接口类似于 2010 年开发的名为 HandlerSocket 的早期实验性插件。http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
这是一个 Percona 博客,显示了 InnoDB memcached 与 SQL 查询的相对速度的测试:http://www.percona.com/blog/2013/03/29/mysql-5-6-innodb-memcached-plugin-as- a-缓存层/
在评论中回复您的问题:
你可能有误解。数据永远不在Memcached 中。MySQL 和 Memcached 之间没有自动同步。唯一的问题是MySQL正在模仿Memcached的API和协议。他们这样做没有任何原因,只是为了让开发人员熟悉 API。
当您使用“Memcached API for InnoDB”时,您将应用程序连接到守护进程监听的端口mysqld。您在此连接上的请求直接在 InnoDB 存储引擎中读取和写入行。中间没有 Memcached 实例。
| 归档时间: |
|
| 查看次数: |
5374 次 |
| 最近记录: |