【问题标题】:Recommended Hardware for Specific Number of Records in SQL Server DatabaseSQL Server 数据库中特定记录数的推荐硬件
【发布时间】:2011-01-06 06:56:15
【问题描述】:

对于一个典型的 SQL 服务器数据库表,有多少条记录被认为是正常的?我的意思是,如果数据库中的某些表包含三四百万条记录,我应该考虑更换硬件、分区表等吗?我有一个查询,它只连接两个表,并且在它的 WHERE 子句中有四个条件和一个 ORDER By。此查询通常需要 3-4 秒才能执行,但每 10 或 20 次执行一次,执行时间可能更长(10 或 20 秒)(我认为这与参数嗅探无关,因为我正在重新编译每次查询)。如何改进我的查询以在不到一秒的时间内执行?我怎么知道它是如何实现的?我如何知道增加 RAM 数量或添加新硬盘驱动器或增加 CUP 速度甚至改进表上的索引是否会提高性能? 对此的任何建议将不胜感激:)

【问题讨论】:

    标签: sql-server performance hardware


    【解决方案1】:

    400 万条记录并不是很多。甚至 Microsoft Access 也能做到这一点。

    即使是 3-4 秒的查询也是很长的时间。当您遇到此类性能问题时,有 95% 的情况归结为:

    • 缺乏适当的索引;
    • 查询写得不好;
    • 一种不适合编写高性能查询的数据模型;
    • 未参数化的查询会破坏查询缓存;
    • MVCC 已禁用,并且您有长时间运行的事务阻塞了 SELECTS(开箱即用,这就是 SQL Server 的行为方式)。有关这方面的更多信息,请参阅 Better concurrency in Oracle than SQL Server?

    这些都与硬件无关。

    除非记录非常庞大或吞吐量非常高,否则硬件不太可能是您的问题的原因或解决方案。

    【讨论】:

    • 非常感谢您的回答!我将在一个单独的问题上发布我的查询以讨论其性能。顺便问一下,sql server 有多少条记录算是巨大的?
    • 这取决于记录的大小和数据库的吞吐量。没有固定的号码。不过,我不认为我真的会担心,直到它达到 10 或 100 数百万。
    • 超大型数据库 (VLDB) 的定义是主观的/值得商榷的,Wiki 列出了一个常见的基准为 1Tb 或数十亿行 - 鉴于 SQl Server 现在已在 30 分钟内加载了 1Tb 的数据( blogs.msdn.com/sqlperf/archive/2009/03/03/…) 这个定义看起来有点过时了。
    • cletus,我已经在这里发布了我的查询:stackoverflow.com/questions/2086368/…你能看一下吗?
    【解决方案2】:

    除非您正在做一些重量级的joins,否则 3-4 百万行不需要任何额外的硬件。我首先会调查是否有适当的索引,是否正确使用等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-30
      • 2012-07-02
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      相关资源
      最近更新 更多