2010-07-13 109 views
4

我也有一个very large table in SQL Server(2008 R2开发版),它有一些性能问题。哪个数据库(DBMS)可以最好地处理大型表?

我想知道如果另一个DBMS会更好地处理大型表格。我主要只考虑以下系统:SQL Server 2008,MySQL和PostgreSQL 9.0。

或者,正如上面提到的问题所回避的,表格大小和性能主要是指标和缓存因素?

此外,更大规范化会提高性能还是阻碍呢?

编辑:

下面的评论之一,我的含义是模糊的。我有超过2000万行(20年的股票数据& 2年的期权数据),我试图找出如何提高一个数量级的性能。我只关心阅读/计算性能;我不在乎写作表现。唯一的写入是在数据刷新期间,而这些是BulkCopy。

我已经有一些索引,但希望我做错了什么,因为我需要加快很多事情。我也需要开始查看我的查询。

提供的评论和答案已经帮助我了解如何开始分析我的数据库。我是一名程序员,而不是DBA(因此Marco的书推荐是完美的)。我没有那么多的数据库经验,而且我以前从未对数据库进行过配置。我会尝试这些建议并在必要时报告。谢谢!

+1

没有“最好的”。简单地说“足够[足够]满足功能需求和资源限制”。此外,这个问题是如此令人不安的模糊 - 建立一些测试用例,检查查询计划,未使用/超额索引,集群,使用滑动窗口的好处(如果有的话)等。 – 2010-07-13 21:14:49

+4

做什么时会出现性能问题?读?写作?此外,也许定义大。许多行?很多专栏?都?你使用分区吗?你为什么不以自己的表格结构,数据和查询为基准来衡量自己? – 2010-07-13 21:16:47

+0

一些更多的资源:http://stackoverflow.com/questions/761204/what-resources-exist-for-database-performance-tuning – 2010-07-13 21:51:26

回答

11

80M行不大。您只需要学习如何设计和查询这种大小的数据。其中可能包括规范化,反规范化,聚类,索引,但很多时候它们似乎更深层次的权衡。例如,如果优化程序不够好或者判断错误的统计信息,那么添加索引实际上可能会损害性能,例如,即使阅读

我建议你阅读Refactoring SQL Applications,因为它不是从“DB调谐器”,而是从开发人员的角度来解决问题。

这本书是由The Art of SQL的作者撰写的,在很多场景下比较了Oracle,SQL Server和MySQL。这是务实的,并附带一些有用的图表。

我会远离MySQL,除非被迫。根据“岩石”的几个定义,Postgres 9.0的岩石,但我仍然会用8.4生产几个月。

如果你想人来帮助你与此表,提供尽可能多的细节尽可能:架构,索引,数据分发,使用模式等

+0

同意。学习命令行与数据库进行交互打开了新的大门,大型数据库不会成为问题。 – swt83 2010-07-13 21:42:44

+0

这完全是我一直在寻找的建议。谢谢!是的,我还需要查看我的查询 – JohnB 2010-07-13 21:54:10

+0

对于Postgres评论+1 – rfusca 2010-07-14 03:28:20

4

切换DBMS不是解决方案。

有多大? 它有什么指标?

如果真的那么大,那么你能分割它吗?

1

我认为simpledb是选择。考虑到亚马逊将它用于他们的平台。

+0

+1指出SimpleDB。使用云对我的senario来说是个好主意。然而,#1,我不确定我可以使用SimpleDB来执行BulkCopy,并且单独的插入会太慢(因此很昂贵),#2,这只是一个宠物项目,我不想托管数据库。 – JohnB 2010-07-13 21:53:10

4

你是从SQL Server最大化的一个很长的路要走。如果您没有解决设计和索引问题是性能问题的根源,那么您只需将它们移植到不同的平台即可。

不会有一个银色的子弹解决方案,可以“让数据库变得更快”,否则很多DBA会失业。你只需要做一些性能分析,并微调你的数据库设计和索引策略,以获得符合你的要求的性能。

对不起,确实没有捷径。

如果您提供更多关于queriesthat在性能和底层表结构/索引方面存在问题的详细信息,我敢打赌,SO上的聪明人将能够提供一些指导。

0

两个DB产品,其中大部分真正的大公司,银行,军队的,政府委托的大量数据是甲骨文DB2。两者都有适当的价格标签。这两款产品都有数十年的强化专业调校,不过通常这些优势仅适用于那些为高性能顾问提供支付(另外!)账单的人士。我有一位朋友是这样的DB2顾问;他收费了一只胳膊和一条腿,但通过其他人不会考虑的措施获得了惊人的表现收益。

这些都不在你的短名单中,所以你很可能不会考虑它们。我怀疑任何其他产品都可以处理您的负载,尽管我对微软产品有一些不信任。所以...认为这只是为了信息的缘故。

1

刚看到这一点。你需要检查infobright.org。对于数字计算,它很棒。它为mysql提供了一个数据库引擎,但是为分析而不是事务性更新构建。

唯一的问题是您的数据集对于infobright有点小,但应该可以正常工作。