大型数据库应该选择哪种数据库?

4
我即将开始一个项目,短期内可能会涉及几百万行数据,因此我正在研究我使用的数据库,因为这肯定是一个问题。据我所知,一旦表格中达到2,000,000行时,所有不同版本的SQL都会出现问题。那么,在这种大型项目中,有没有推荐的好的数据库呢? 这是一个网站,归档旧条目不是理想选择,但如果无法克服问题,这是可以实施的。谢谢!

5
“2,000,000行问题”是什么?在我使用过程中从未遇到过在那个标记处突然出现的问题。 - andri
19
SQL是一种语言。无论你之前读到了什么都是无稽之谈。此外,200万行并不算大。真的。 - skaffman
3
他可能指的是 2,147,483,647(约 20 亿)而不是 2 百万。这可能会成为一个障碍,因为 Int32(常规有符号整数)在此处达到最大值(您将需要转换为 Int64)。尽管如此,在 20 亿个记录时,您可能还会遇到其他问题 :) - Alex
3
我不知道,我坚持认为“有关200万的错误原始建议理论”的说法。 - skaffman
如果你即将开始一个可能涉及200万个数据库记录的编程项目,那么你肯定知道MySQL可以很好地处理这个问题。 - pbreitenbach
我们曾经在一个表的主键上溢出了int32(MSSQL“int”)...但它仍然能够很好地执行我们对它进行的操作。 - Mark
14个回答

6
没有哪个自称为SQL数据库的数据库会在处理200万条记录时出现问题。但是有些数据库在处理20亿条记录时可能会出现问题。
我曾经使用过超过1.5亿条记录的MySQL数据库而没有出现任何问题。在决定使用哪种数据库之前,您需要确定您需要从数据库中获取哪些功能,而不是纠结于几百万行记录 - 这并不算太多。

4
首先,在数据库领域,一百万条记录并不算多。任何值得信赖的数据库都能很好地处理这个数量级。
在表格上创建适当的索引,几乎所有的数据库都能处理大量的记录。我曾经见过有数百万行数据的MySQL数据库也很好运行,而MySQL并不是数据库领域中的重量级选手。
MS SQL Server、PostgreSQL、DB2和Progress OpenEdge等几乎所有类型的数据库都可以使用如果你创建适当的索引。但是像MS Access和可能sqlite这样的小型数据库,在存储大量数据时可能会出现问题。

3

我在 MS SQL Server 上的表格中有超过 200 万行数据,没有遇到问题。当然,这取决于您如何使用该数据。

只是不要尝试使用 MySQL 处理此类数据。至少根据我的经验,它不能提供高性能所需的足够调整。我曾遇到过一些具有大量数据的(几乎)相同设置的表格。MySQL5 在相同硬件上的性能比 SQL Server 慢了约 30 倍。也许是极端案例,但仍然如此。

我对 PostgreSQL 或 Oracle 的经验太少,无法评判,因此我只会建议不要使用 MySQL。或者 Access ;)


2
嗯,虽然我不知道你的经验,但是一概而论“它不允许足够的调整以提供足够高的性能”这种说法我很难相信。请考虑例如Flickr、Facebook和Wikipedia都在使用MySQL;它们可能有超过200万行的表格。 - sleske
7
说 Facebook 使用 MySQL 是一种过度简化。他们使用了一个缓存系统,因为 MySQL 本身并不够快。他们对源代码进行了修改,以改善不同服务器之间的复制和缓存等方面。http://blog.facebook.com/blog.php?post=7899307130 - Thorarin

3

我目前的项目中有一张表格,其中有1300万行。 MS SQL Server可以很好地处理它。实际上,200万行根本不算什么。

但是,如果你想要一个高端数据库,可以考虑Oracle、Teradata和DB2。


3

我们在MSSQL (2000, 2005, 2008)中运行着许多拥有数亿行数据的数据库。你遇到问题的地方并不是在行数,而是在对数据的访问特征上。根据情况,你可能需要跨越不同的硬件进行扩展,这也是不同数据库服务器之间真正体现差异的地方(还有价格...)


3

Microsoft SQL Server、MySQL、Oracle和DB2都可以轻松处理数百万行数据。

关键在于找到一个能够正确设计和管理数据库的DBA,以获得所需的性能特性。


1

200万行其实并不算多。我见过很多表格有超过5000万行,但在MS SQL中性能仍然可以接受。

依我之见,你距离一个“大型数据库”还有很长的路要走。


1
正如其他人所说,任何体面的数据库都可以处理这种负载。我以前曾经使用过 MS SQL Server 和 PostgreSQL 来管理这样大小的数据库,两者都非常棒。我推荐 PostgreSQL,因为它是免费且开放的。我从未进行过性能比较,但它似乎非常有能力。我建议避免使用 DB2 或 Oracle,因为它们很难使用(除非您愿意支付全职 DBA 的工资,在这种情况下,这样的人可能会比任何其他解决方案更好地提高那些数据库的性能,尤其是 Oracle)。

1

我同意richardtallent的观点。大型数据库系统都为我们提供了处理大型数据库的好工具。(200万行数据不算什么,但是如果索引糟糕或选择语句不当时,特别是在跨多个大小相似的表进行连接时,您可能会看到性能问题。)这取决于成本、可用性、支持成本等利弊。

我对Oracle和SQL Server最为熟悉。Oracle的价格相当昂贵,需要一个昂贵的专业DBA才能真正使用它。它并不以易用性而闻名,但熟悉它的DBA或程序员可以很好地使用它。它也有很大的灵活性,一些人认为它比其他数据库更强大。(我不知道这是否正确,但我知道它肯定提供了许多可以用来提高效率等方面调整的不同方式。)

SQL Server肯定可以很好地处理大型数据集。它有一个“更漂亮”的界面,被认为更易用,但可用性最终是个人观点问题。它的价格标签较便宜,但灵活性可能稍微不如Oracle。您可以获得一个“便宜”的SQL Server数据库管理员,因为其用户友好的界面使得基本的DBA任务对于非专家而言变得容易。但你会得到你付出的代价(通常) ,如果你真的想要效率和安全性,你需要支付一位专家。

这些只是在考虑数据库时要考虑的一些事情。我相信MySQL和DB2也有自己的利弊要权衡。

但是,它们中没有一个会对区区200万行产生问题。(我经常在一个拥有数百个表格的数据库中工作, 其中一些表格拥有超过5000万行,但由于DBA知道他们在做什么,因此我几乎看不到性能下降)

后续编辑: 由于这是针对网站的,请考虑前端/后端的整合。例如,如果您正在使用ASP进行网站开发,则SQL Server是一个自然的选择。


关于集成部分的观点很好。当然,您可以使用几乎任何前端和数据库的组合,但路程可能会更加崎岖 :) - Thorarin

0
对于大多数应用程序,MS SQL都可以正常工作。MySQL适用于较小的应用程序,但是如果您真正关心数据库性能,我建议您选择Oracle,但如果像我们大多数人一样无法使用价值80000美元的数据库,我建议使用MS SQL,它运行良好。根据您所做的事情(网站),我会使用MS SQL并利用缓存。正确使用数据库比使用正确的数据库更重要。

Oracle的定价始于不到80,000美元。标准版一号每个处理器为6,000美元。 - Gary Myers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接