哪种数据库(DBMS)最适合处理大型数据表?

4
我有一个在SQL Server(2008 R2 Developer Edition)中的非常大的表格,存在一些性能问题。
我想知道其他DBMS是否更适合处理大表格。我主要考虑以下几个系统:SQL Server 2008、MySQL和PostgreSQL 9.0。
或者,如上面提到的问题所暗示的那样,表格大小和性能主要受索引和缓存的影响?
此外,更高的规范化会提高性能还是阻碍性能?
编辑:
下面的评论之一称我过于含糊。我有超过2000万行数据(20年的股票数据和2年的期权数据),我正试图找出如何将性能提高一个数量级。我只关心读取/计算性能;我不关心写入性能。唯一的写入是在数据刷新期间进行的,而这些是批量复制。
我已经有了一些索引,但希望我做错了什么,因为我需要大大加快速度。我需要开始查看我的查询。

之前提供的评论和答案已经帮助我了解如何开始对我的数据库进行分析。作为一名程序员,而不是DBA(因此Marco的书籍推荐非常合适),我没有太多的数据库经验,也从未对数据库进行过分析。我将尝试这些建议,并在必要时进行报告。谢谢!


1
没有所谓的“最佳”。只要“满足功能需求并在资源限制范围内足够即可”。此外,这个问题非常模糊——需要建立一些测试用例,检查查询计划、未使用/多余的索引、聚集、使用滑动窗口的好处(如果有的话)等等。 - user166390
4
做什么会有性能问题?阅读?写作?另外,也许需要定义“大”。许多行?许多列?两者都是?您是否使用分区?为什么不进行基准测试,因为您拥有表结构,数据和查询? - Pascal Thivent
一些更多的资源:https://dev59.com/DXRA5IYBdhLWcg3w_C8w - Marco Mariani
6个回答

11

80M行不算大。您只需学习如何设计和查询该大小的数据,这可能包括规范化、去规范化、聚簇、索引等方法,但往往权衡更深入。例如,添加索引实际上可能会损害性能,即使是仅进行读取,如果优化器不够好或决策错误的统计数据。

我建议您阅读Refactoring SQL Applications因为它从开发者的角度而非“DB tuner”的角度来解决问题。

该书作者是《The Art of SQL》一书的作者,比较了Oracle、SQL Server和MySQL在许多场景下的情况。它是实用的,并附带一些有用的图表。

除非被迫使用,否则我会远离MySQL。根据多种“出色”的定义,Postgres 9.0非常出色,但我仍然会在生产中使用8.4几个月。

如果您想让人们帮助您处理此表,请提供尽可能多的细节:模式、索引、数据分布、使用模式等等。


同意。学习命令行与数据库交互可以打开新的大门,而大型数据库也不再成为问题。 - swt83
这正是我正在寻找的建议。谢谢!是的,我也需要检查我的查询。 - JohnB

4

切换DBMS并不是解决方案。

“大”有多大?它有哪些索引?

如果确实很大,你能将其分区吗?


4
你距离 SQL Server 的最大化还有很长的路要走。如果不解决设计和索引问题,这些性能问题将只是被移植到另一个平台上。
没有什么银弹式的解决方案可以“使数据库快速”,否则许多 DBA 就会失业。你需要进行性能分析,并优化数据库设计和索引策略,以满足你的需求。
抱歉,真的没有捷径。
如果你提供更多关于性能问题和底层表结构/索引的详细信息,我相信 SO 上的聪明人会提供一些指导。

1

我认为SimpleDB是一个不错的选择。考虑到亚马逊将其用于他们的平台。


+1 指出了 SimpleDB。对于我的情况来说,使用云是一个很好的想法。然而,#1,我不确定我是否可以使用 SimpleDB 进行 BulkCopy,单个插入将会非常慢(因此昂贵),#2,这只是一个小项目,我不想要托管数据库。 - JohnB

1

刚看到这个。你需要查看infobright.org。对于数值计算,它很棒。它提供了一个针对MySQL的数据库引擎,但是专门用于分析,而不是事务处理。

你唯一可能会遇到的问题是你的数据集对于infobright来说有点小,但应该可以很好地解决。


0

在众多大型企业、银行、军队和政府信赖的数据库产品中,有两个是最受欢迎的,它们分别是OracleDB2。这两个产品都价格昂贵,但背后都有数十年的专业调优经验,尽管往往只有那些愿意额外支付高额咨询费用的人才能享受到其中的好处。我有一个朋友就是DB2顾问,他收费极高,但通过一些其他人不会考虑的措施实现了惊人的性能提升。

由于这两个产品都不在您的短列表中,所以您可能不会考虑它们。我怀疑其他任何产品都可以处理您的负载,尽管我对微软产品有些不信任。因此...将其视为纯粹的信息提供给您。


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