我如何知道项目何时适用于MySQL,我应该使用在可扩展性方面具有更好声誉的东西?
在性能下降之前,MySQL是否有最大数据库大小?与Oracle或SQL Server等商业DBMS相比,哪些因素导致MySQL不可行?
答案 0 :(得分:2)
Google使用MySQL。您的项目比Google更大吗?
除了Smart-alec评论之外,MySQL是一个专业级别的数据库应用程序。如果你的应用程序给MySQL带来了压力,我敢打赌它会对任何其他数据库做同样的事情。答案 1 :(得分:2)
如果您正在寻找几个例子:
Facebook仅在存储了超过7太字节的收件箱数据后才移至Cassandra。 (来源:Lakshman, Malik: Cassandra - A Decentralized Structured Storage System。)(......即使他们在那个阶段遇到了很多问题。)
维基百科还有handles hundreds of Gigabytes的MySQL文本数据。
答案 2 :(得分:2)
我在一家非常大的互联网公司工作。 MySQL可以扩展得非常非常大,具有非常好的性能,但需要注意几点。
您可能遇到的一个问题是大于4千兆字节的索引无法进入内存。我曾经花了很多时间试图通过摆弄一些索引参数来提高MySQL的全文性能,但你无法解决基本的问题,如果你的查询命中磁盘索引,它会变慢。
您可能会发现一些帮助您解决问题的帮助应用程序。对于全文问题,有Sphinx:http://www.sphinxsearch.com/
现在在Craig's List工作的Jeremy Zawodny有一个博客,他偶尔会讨论大型数据库的表现:http://blog.zawodny.com/
总之,您的项目可能对MySQL来说不是太大。对于以前使用MySQL的某些方式来说,它可能太大了,您可能需要对它们进行调整。
答案 3 :(得分:1)
MySQL 是商业DBMS,您只需要option即可获得Oracle或Microsoft提供的支持/监控。或者您可以使用社区支持或社区提供的监控软件。
答案 4 :(得分:1)
您应该关注的不仅仅是运营规模。关键还有:
无论你想要什么,都要小心Oracle RAC(他们的集群) - 众所周知它是“有问题的”(简单地说)。众所周知,SQL Server要便宜很多,规模要差很多(没有“RAC”选项),但基本上工作时不会让管理员每小时想要自杀(“RAC”选项似乎就是这样)。对于Terra Server(http://msdn.microsoft.com/en-us/library/aa226316(SQL.70).aspx)
,可扩展性“更糟糕”仍然足够好最近有些问题是人们在10gb数据库上重建索引时遇到问题。
我的2美分这么多。我相信一些MySQL专家会在那里讨论问题。
答案 5 :(得分:1)
主要是桌子大小。
我在这里假设您将使用mysql的Oracle innoDB插件作为引擎。如果你不这样做,那可能意味着你正在使用商业引擎,如infiniDB,InfoBright for Tokutek,在这种情况下你的问题应该发送给他们。
InnoDB对于非常大的表格有点讨厌。建议您尽可能使用非常大的实例对表进行分区。基本上,如果你的(经常使用的)索引并不都适合ram,那么插入将非常慢,因为它们需要触及很多不在ram中的页面。这无法解决。
如果它符合您的要求,您可以使用MySQL 5.1分区功能,或者如果没有,则可以在应用程序级别对表进行分区。如果你可以让你的表的索引适合ram,并且一次只加载一个表,那么你就是胜利者。
你可以使用插件的压缩来使你的ram更进一步(因为页面在ram和光盘上压缩)但它无法超越基本限制。
如果你的表的索引不是全部(或者至少是MOSTLY - 如果你有一些在99.99%的情况下为NULL的索引,你可能会在没有这些索引的情况下离开)适合ram,那么插入速度会很糟糕。
数据库大小不是主要问题,前提是您的表在批量加载时单独适合ram(当然,您只能一次加载一个)。
这些限制确实发生在大多数基于行的数据库中。如果您需要更多,请考虑列数据库。
Infobright和Infinidb都使用基于mysql的核心,并且是基于列的引擎,可以处理非常大的表。
Tokutek也非常有趣 - 你可能想联系他们进行评估。
当您评估引擎的适用性时,请确保在生产级硬件上加载非常大的数据。使用(例如)10G数据库测试它是没有意义的,这不会证明什么。