|
|
1
5
我使用一些SQLServer2008数据库,其中包含行数为数十亿的表。我们遇到的唯一真正的问题是磁盘空间、备份时间等问题。查询总是很快(现在仍然如此),通常在<1秒范围,即使是重连接、聚合等,也不会超过15-30秒。 关系数据库系统绝对可以处理这种负载,如果一台服务器或磁盘开始出现问题,那么大多数高端数据库都有分区解决方案。 在你的问题中,你没有提到任何关于数据如何被索引的问题,10次中有9次,当我听到关于SQL性能的抱怨时,结果证明索引不足/不存在是问题所在。 当你看到一个缓慢的查询时,你应该做的第一件事就是调出执行计划。如果您看到任何完整的索引/表扫描、行查找等,这表明您的查询没有足够的索引,或者是编写的查询无法利用覆盖索引。低效的连接(主要是嵌套循环)往往是第二大罪魁祸首,通常可以通过查询重写来解决这个问题。但在看不到计划的情况下,这一切都只是猜测。 是的,关系数据库系统完全能够处理这种规模 ,但是如果您想要更详细/有用的内容,那么您可能需要发布一个示例模式/测试脚本,或者至少一个执行计划供我们查看。 |
|
|
2
3
9000万行应该是90GB左右,因此您的瓶颈是磁盘。 如果你经常需要这些查询,你必须分割你的数据,并预先计算你的数据部分没有改变(或没有改变,因为上次)的gouping总和和平均数。 例如,如果您处理过去N年(包括今天)的历史数据,您可以一次处理一个月(或一周、一天),并将总计和平均值存储在某处。然后在查询时只需要重新处理包含今天的时段。
|
|
|
3
2
|
|
|
5
1
在SQLServer2005数据仓库中的多维(Kimball方法)模型中,我们通常在一个月分区中有这么多行的事实表。 有些事情是瞬间发生的,有些事情需要一段时间,这取决于操作、有多少恒星被合并以及发生了什么。 同样的模型在Teradata上的性能很差,但我的理解是,如果我们用3NF重新建模,Teradata并行化将工作得更好。Teradata安装的成本是sqlserver安装的许多倍,因此它只是展示了建模以及将数据和流程与底层功能集匹配有多大的不同。 如果不了解更多关于您的数据的信息,以及它当前是如何建模的,以及您做了哪些索引选择,就很难说什么了。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |