我无法清楚地了解MySQL 5.6引入w / r / t memcache的内容。
据我所知,memcache本身就是一个庞大的,共享的,内存驻留的哈希表,由服务器 memcached 管理。特别是,它对持久数据存储一无所知,并且在这方面不提供任何服务。它只知道键和值(就像Perl哈希)。
我认为 mySQL 5.6引入的是 NoSQL API ,mySQL客户端可以通过密钥从mySQL服务器请求数据,而不是通过SELECT语句。 (同样,他们可以使用key = value对执行更新)。 MySQL使用 memcached 将这些内容缓存在内存中作为性能提升,但也会处理诸如在数据库老化之前将更新写回数据库等事情。
换句话说,使用 memcached 是mySQL 5.6 NoSQL功能的实现细节,而不是应用程序员需要注意的事项。
我欢迎任何更正或放大我的理解。
谢谢, 章
答案 0 :(得分:2)
我认为这很简单(来自官方文档):
我不同意你的最后一句话,应用程序员必须真正了解memcache插件,因为在MySQL服务器上安装它意味着他可以通过memcached语言界面决定(可能他将被迫)访问数据或通过SQL接口
为了更好地理解此插件对应用程序设计的影响,您应该知道MySQL使用了3个配置表来进行正确的memcached管理;了解“cache_policies”的工作原理会让你对某些疑问产生影响:
表cache_policies指定是将InnoDB用作memcached(innodb_only)的数据存储,还是将传统的memcached引擎用作backstore(仅缓存)或两者(缓存)。在最后一种情况下,如果memcached在内存中找不到密钥,它会在InnoDB表中搜索该值。
这是链接:innodb-memcached-internals
上面的引用意味着,根据您对特定键值的决定,您将拥有不同的应用场景:
当然,后一种配置决定与您的特定需求密切相关
答案 1 :(得分:1)
我真的没有给你一个完整的答案我害怕,因为我也在努力寻找我需要的细节,然后再玩弄它。
然而,有一点很重要,我已经设法发现你似乎错过了,即通过新的插件访问InnoDB存储引擎,你实际上完全绕过SQL并避免所有的开销它
这当然使它本质上是一个键/值存储更类似于大多数NoSQL数据库,并且具有与它们相关的所有缺点。即没有加入等...
然而,目前在许多应用程序的另一面,这正是我们想要的。我遇到的只有少数现实世界的性能提及,但似乎所有这些实现都明显优于MongoDB和其他类似的NoSQL解决方案(我不知道多少真相)甚至一个(相对来说)在商品服务器上声称高达700k qps的比较(相比之下,在经过良好调整的MySQL设置上大约为100k qps),如果这是真的,这是不可思议的。
资源来源:
http://yoshinorimatsunobu.blogspot.co.uk/search/label/handlersocket
无论如何,对不起,我不能再提供任何帮助,但至少可以考虑它!