从- http://www.readwriteweb.com/hack/2011/04/you-got-nosql-in-mysql-memcach.php
(如果没有意义的话,请纠正我)
潜在利益
innodb有内部缓冲池大小,
让memcached担任分销商有意义吗?
但是,我认为访问本地RAM要比在分布式环境中快得多。
有什么想法吗?
发布于 2011-04-18 16:44:05
这两种机制应该得到正确的平衡,而不应被视为相互排斥。原因是?
memcached是一种管理良好的内存方案,用于使用用户定义的标记存储数据。这就消除了对重磁盘I/O的需求。
InnoDB是一个兼容酸的存储引擎,它使用MVCC (多版本并发控制)来允许大量的事务读写。如果有足够的内存,可以将工作数据集全部存储在RAM中,从而消除磁盘I/O。
如果你把它们充分结合在一起,它们的全部力量最多也会抵消彼此的利益。我可以绝对肯定地声明,因为InnoDB将缓存访问的所有数据和索引页,而memcached将存储相同的用户数据。
Memcached将不会在其缓冲池中存储InnoDB将具有的索引页信息。
Memcached将只存储所需的确切数据片段。InnoDB数据页可能包含来自其他表行的数据。
InnoDB比memcached更容易检索数据范围,因为memcached必须作为额外步骤通过DB层。
这两种产品一定会变得像一对已婚夫妇(请原谅我的比喻,我已经幸福地结婚16年了)。每一位配偶都必须微调自己的长处,以适应对方,并在每件事上取得理想的平衡。InnoDB (坚强的妻子)和Memcached (坚强的丈夫)就是这样。
InnoDB可以根据所有数据和索引页之和或安装内存的75%分配所需的内存,以较小的值为准。Memcached虽然占用较少的前期内存,但可能需要某种形式的预测来计算要处理多少内存。
还请记住,当涉及到大量读取时,InnoDB中的数据和索引页将变得相当陈旧(但内容上是最新的),因为在InnoDB缓冲池之外访问InnoDB缓冲池之外的部分内存与驻留在InnoDB缓冲池中的数据相同。因此,写到memcached,然后将数据编码到InnoDB,仍然会触发最终的磁盘I/O。InnoDB提供快速读取的能力被memcached剥夺了。在相同的控制流中,只有在编写和记录小事务以提供崩溃恢复时才需要InnoDB。(HHHMMMM,这听起来像丈夫(他先做事情,必须承认和爱他的妻子)和妻子(保释丈夫,但保持他的尊严),不是吗??)
如果正确地预测memcached将保存多少数据,则可以按memcached所需总内存的百分比(即,如果您计划对memcached使用8G内存,对InnoDB缓冲池使用6G或更低的内存)来缩放InnoDB。综合起来,它们的内存使用量必须小于已安装的总RAM。一旦达到这一平衡,InnoDB和memcached就会完全互补。
https://serverfault.com/questions/260806
复制相似问题