我在理解MySQL 5.6引入的w/r/t内存缓存时遇到了困难。
据我所知,memcache本身本质上是一个巨大的、共享的、内存驻留的哈希表,由服务器memcached管理。特别是,它不了解持久数据存储,也不提供这方面的服务。它只知道键、和值(就像Perl哈希)。
我认为mySQL 5.6引入的是NoSQL API,mySQL客户端可以通过键而不是SELECT语句从mySQL服务器请求数据。(类似地,它们可以使用key=value对执行更新)。MySQL使用memcached在内存中缓存这些内容,以提高性能,但也会处理一些事情,比如在更新退出缓存之前将更新写回数据库,等等。
换句话说,memcached的使用是mySQL 5.6 NoSQL特性的实现细节,应用程序程序员不需要知道这一点。
我欢迎对我的理解进行任何修改或放大。
谢谢你,小伙子
发布于 2013-01-26 00:27:12
我认为这很简单(从官方文档来看):
我不同意最后一句,应用程序程序员必须真正了解memcache插件,因为将它放在MySQL服务器上意味着他可以决定(也许他会被迫)通过memcached语言接口或SQL接口访问数据。
要更好地理解这个插件对应用程序设计的影响,您应该知道MySQL使用了3个配置表来进行适当的memcached管理;了解"cache_policies“的工作原理会给您的一些疑虑蒙上阴影:
表cache_policies指定是使用InnoDB作为memcached (innodb_only)的数据存储,还是使用传统的memcached引擎作为后端存储(仅缓存),还是同时使用两者(缓存)。在最后一种情况下,如果memcached无法在内存中找到键,它将搜索InnoDB表中的值。
下面是链接:innodb memcached-内部件
以上引用意味着,根据您对特定键值的决定,您将有不同的应用程序场景:
1. cache-only -> means that you should query the data via the memchached interface only
2. caching -> means that you can use both the interfaces (note that the storage mechanism slightly changes)
当然,后一种配置决策严格地与您的特定需求相关。
发布于 2012-10-09 00:55:40
我真的没有一个完整的答案,我担心,因为我也在努力找到我需要的细节,然后再玩它。
尽管如此,我还是发现了一个重要的问题,您似乎忽略了这一点,即通过新插件访问InnoDB存储引擎,您实际上完全绕过了SQL,并避免了它带来的所有开销。
当然,这使得它本质上是一个键/值存储,更类似于大多数NoSQL数据库,并且有着与它们相关的所有缺点。比如不加入等等..。
然而,对于现在的许多应用程序来说,这正是我们想要的。在现实世界中,我只提到过很少的几个性能方面的例子,但似乎都指出,这种实现的性能明显优于MongoDB和其他类似的NoSQL解决方案(我不知道其中有多少真相),甚至有一个(相对深入的)比较,声称在一个商品服务器上的qps高达700 000 qps(而在调得很好的MySQL设置中只有大约100 K),如果是这样的话,这是难以置信的。
这里的资源:
http://yoshinorimatsunobu.blogspot.co.uk/search/label/handlersocket
不管怎么说,对不起,我不能再帮你了,至少这是我思考的食物!
https://stackoverflow.com/questions/12770547
复制相似问题