【问题标题】:How big the database should be in order to take 30 minutes to query [closed]数据库应该有多大才能花 30 分钟查询 [关闭]
【发布时间】:2013-09-16 19:41:47
【问题描述】:

我们的标准化表很少,每个表平均包含 250 万行。然后是一个带有连接的选择查询。执行需要 30 多分钟。 db 服务器在具有 9GB 内存和四核 Xeon 处理器的机器上运行。 所以,由于我从未使用过大数据,我试图了解这是错误的查询问题还是硬件问题?任何信息表示赞赏

【问题讨论】:

  • 我的猜测是错误的查询,发布解释计划和您正在运行的查询以及表的架构。
  • 补充说明,除非您是 1962 年的时间旅行者,否则 250 万条记录并不是大数据。
  • 同意@Woot4Moo - 听起来绝对像是一个查询问题。请发布您可以发布的任何信息。
  • 当然,您需要在查询中进行很好的优化。即使有 250 万,30 分钟似乎也太多了。
  • 这就像问“开车 100 英里需要多长时间?”,不知道速度(查询)就不可能说出来。

标签: sql sql-server performance linq select


【解决方案1】:

根据我的经验,30 分钟的查询并不是严格意义上的数据库大小的结果。

在这种情况下有很多变量取决于您考虑的查询时间。您是指在用户端感知的执行时间(例如:网页请求或应用程序响应时间)?还是您指的是直接在数据库上执行的原始查询(通过数据库管理器或命令行)?

如果您确实指的是直接在数据库上执行原始查询的执行时间,那么我确定瓶颈的下一步将是使用 SQL EXPLAIN 修饰符,或者像 HeidiSQL 这样的应用程序来对查询进行基准测试并获得细分查询组件。

我的猜测是您没有正确使用索引,数据库必须创建临时索引和表并针对它们执行。这是我下意识的假设。

我们截断的开发数据库针对 1 到 3 百万行的表运行复杂的查询(它包含我们生产数据库的一小部分,仍然以 16 gig 的速度运行),虽然我们有时会达到大约 15 分钟,但这些都是大量查询。

【讨论】:

    【解决方案2】:

    在对您的软件充满信心之前,不要与硬件有关。 使用 EXPLAIN PLAN 详细信息发布您的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多