MySQL(数据库管理系统),Memcached(分布式缓存系统)和NOSQL(反数据库)东京霸
所有的人,常常迫使使用,如果不把它是否是最好的解决办法有问题的思想像MySQL(数据库管理系统)数据库本身.为什么 因为它们的其他应用程序使用它,为什么不能在新的应用程序 在过去几个月我一直在做客户谁使用他们的大多数人一样数据库中使用Memcached(分布式缓存系统)的工作吨.查找一个基于一个关键行,更新行的数据,在数据库中的东西行回来.洗净,重复.确保这些设置各不相同,有时,赠送了"通过用户名查找,甚至罕见的计数".但它们大部分被设计为简单.
一个典型的例子是一个简单的网络游戏.一个在线游戏可能只需要一个应用程序从数据库中检索一条记录.该记录可能包含所有的游戏,生死数据更新和填充到数据库回来.你会感到惊讶,有多少人使用这种类型的系统,因为我把这种类型的应用运行频繁.保持简单,可确保应用程序通常是指和精简,做得好.问题是即使这样简单的设计可以开始有作为数据大小的增加问题,您通过您的可用记忆体的打击.是否有更好的架构 是否有办法摆脱你的数据库的可扩展性 是数据库即使是这些数据的最佳地点
我决定走通过建立一个非常简单的应用程序已经做了我见过很多客户端.使用这个应用程序,然后进行比较,我可以使用MySQL(数据库管理系统)使用MySQL(数据库管理系统)的Memcached(分布式缓存系统)的,然后喜欢东京卡桑德拉暴君或其他解决办法.我的应用程序执行以下操作:
答)读取一个基于整数的主键的数据库中的行
二)从该行的更新数据并更换硬盘上存储的内容
长)使用从该行的数据,查找在文本字段上的另一个表中的行(称为电子邮件地址).
看起来很简单吧 我的两个表每个包含500万行的数据.让我们看看会发生什么:
你可以看到性能急剧下降时都是我的数据掉出来的内存,这不是很酷吗 毕竟数据库大小往往会在成长和很少收缩.这导致几乎每个人,你如何保持您的数据量日益面临业绩面临的一个挑战
这里是人们从头开始他们的头.自然,他们需要承担更多的规模,我们需要更多的内存!如果性能吸,我们一定要更多.所以这里来的大箱子,只读的奴隶,复杂碎片系统,关于第一组的讨论,更Memcached(分布式缓存系统)的.我们需要掩盖的数据库效率,以确保我们的应用规模.
这个问题对于某些应用,我们是固定的症状,而不是问题本身.不管你多么希望它适合,有些事情可能不工作(如教父3).这个问题是人们以为数据存储要在数据库中. "它的数据,它需要进入数据库."往往是战斗口号.但对于你的帽子,我要你吃惊.对于某些应用程序,把数据库中的数据是愚蠢的.是那个谁的bigdbahead.com博客和正在撰写的MySQL(数据库管理系统)performanceblog这是说你可能不希望使用一个数据库.异端我知道!但是,对于我们许多人已经接受我们的数据存储(至少暂时)以外的数据库. Memcached(分布式缓存系统)的思考.
几乎每个人都爱Memcached(分布式缓存系统)的,它的简单,快速,公正的工程.当您的数据集超过您的内存限制或数据库根本无法再保持这一解决方案能够真正提高性能.我知道你在想我的简单查询,应重点从Memcached(分布式缓存系统)真正受益.所以,我们来试试吧!我把我创建的简单应用程序读取两行,并更新了其中一人读从Memcached(分布式缓存系统)如果有的话,取消对更新和读取只需要时分贝.我测试的推出1GB,2GB Memcached(分布式缓存系统)的大小,和4GB.对于这些测试我留下了256M缓冲池,大约有9个在内存中的数据%MySQL(数据库管理系统)的.
让我们看看1GB的设置:
什么是性能的回归 但是,我们扔在它更多的内存!那怎么可以!
Memcached(分布式缓存系统)的是不治本的.我曾经与许多客户的谁说:"我们只是把一切Memcached(分布式缓存系统)的".有时,一个应用程序将不会尖叫...还有一些需要很多的内存分配到Memcached(分布式缓存系统)许多其他时候是成功的.此应用程序随机选择一个介于1和#200万元通过查找结果的关键.然后,它使用从该行数据随机查找通过电子邮件地址的信息第二件.因为整个数据集约4GB,只有1G是在Memcached(分布式缓存系统)的,我的Memcached(分布式缓存系统)的不断推进以弥补我从数据库中读取数据的新记录室进行.记住重复性Memcached(分布式缓存系统)的需要是有帮助的.我仍然得到一个真正坚实的点击#Memcached(分布式缓存系统)的,但对写入#与仍然很大#的读取需付出了代价,加上MySQL(数据库管理系统)的.另一个地方,我看到这个杀人客户端的应用程序,无论做一些连续扫描和不具备Memcached(分布式缓存系统)的足够的内存.例如,如果你有100万行数据,但只有足够的内存来存储500,000行...顺序访问这些数据会破坏使用缓存:
下一页