MySQL的最大功能

时间:2010-05-12 16:52:00

标签: mysql sql-server performance oracle scaling

我如何知道项目何时适用于MySQL,我应该使用在可扩展性方面具有更好声誉的东西?

在性能下降之前,MySQL是否有最大数据库大小?与Oracle或SQL Server等商业DBMS相比,哪些因素导致MySQL不可行?

6 个答案:

答案 0 :(得分:2)

Google使用MySQL。您的项目比Google更大吗?

除了Smart-alec评论之外,MySQL是一个专业级别的数据库应用程序。如果你的应用程序给MySQL带来了压力,我敢打赌它会对任何其他数据库做同样的事情。

答案 1 :(得分:2)

如果您正在寻找几个例子:

答案 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)

您应该关注的不仅仅是运营规模。关键还有:

  • 用于备份和恢复的Scenaros?
  • 维护。示例:SQL Server Enterprise可以在旧版本可用时重建索引 - 透明。这意味着没有索引重建的停机时间。
  • 可用性(基本上你不想在服务器死机时需要恢复5000gb数据库) - 镜像首选,复制“糟透了”(技术上)。

无论你想要什么,都要小心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数据库测试它是没有意义的,这不会证明什么。