【问题标题】:Performing operations on large database size approx 50 GB on Sql Server [closed]在 Sql Server 上对大约 50 GB 的大型数据库执行操作 [关闭]
【发布时间】:2014-03-05 05:34:31
【问题描述】:

我有一个组合大小约为50GB 的倍数数据库。

我必须执行各种操作并显示结果(仅访问或加入,没有更新/删除/插入操作)。执行这些操作大约需要 8 分钟。

如何将时间缩短到不到一分钟。

我正在使用 SQL Server 2012、Asp.Net 在网页上呈现数据。

【问题讨论】:

  • 您的问题是:“我怎样才能使任何操作速度提高 8 倍?”。没有答案是一般的。

标签: asp.net sql-server database


【解决方案1】:

我有一个合并大小约为 50GB 的倍数数据库

好的,那么“大”在哪里? LARGE 数据库通常被假定为比低端服务器的内存大的数据库。这些天恰好在 64gb 左右。所以,那是小型数据库。

我必须执行各种操作并显示结果(仅访问或加入,否 更新/删除/插入操作)。执行这些操作所花费的时间约为 8 分钟。

一根绳子有多长?

如:什么操作。他们操作了多少数据?

基本上:

  • 要么您犯了严重错误(即索引缺失/极差),要么
  • 您运行的硬件完全不合适,可能是使用速度极慢但又大又便宜的光盘

解决这些问题。我在 TABLES 中选择 daa 没有问题,这些 daa 在毫秒内有几百 GB(即大约 100 亿行中的大约 500 行),因为(a)我有适当的硬件,并且(b)我有正确的索引。我还经常在不到一分钟的时间内从该表中删除 6400 万行。

所以,开始基线调试。查看查询计划,看看您是否遗漏了什么,如果计划看起来不错,请检查硬件。数据库受到严重的 IO 限制,并且喜欢在 SSD 上 - 它的 IO 性能大约是硬盘的 100 倍,对于像您这样的小型系统,拥有足够的内存来进行主动缓存是没有问题的。

【讨论】:

  • 出于测试目的,我使用的是带有 Intel Core i3、4GB Ram 和 500 GB 5400 rpm 硬盘驱动器的系统
  • @SanchitPruthi 正如我所说 - 可怜的硬件。好吧,如果您出于测试目的使用蹩脚的系统,那么期待蹩脚的结果。作为一名从事非平凡工作的开发人员,您应该拥有适当的工具。
  • 我更新了我的硬件,现在效果令人满意
【解决方案2】:

TomTom 明白了。数据库是 IO 绑定的。您在这个问题中有太多未知变量,无法提供任何有价值的帮助。

50 Gb 并不大。您应该能够毫无问题地加入、更新、删除等。即使在较小的机器上也是如此。我认为您缺少索引。

我在托管在与您的笔记本电脑类似的本地服务器上运行了许多较小的操作。我说较小的操作,我仍然能够在几秒钟内选择、加入等数百/数千行。这告诉我你的数据库可能设计不正确。这是应用程序开发人员设计数据库以补充其应用程序和 sql 开发人员设计数据库以支持其应用程序开发团队之间的大辩论。为了解释基础知识,我可以整天打字。确保你的数据库有主键、正确的索引、足够的数据类型(不是所有的 varchar(max) 列)。

http://architects.dzone.com/articles/20-database-design-best

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多