Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server数据库中特定数量记录的推荐硬件_Sql Server_Performance_Hardware - Fatal编程技术网

Sql server SQL Server数据库中特定数量记录的推荐硬件

Sql server SQL Server数据库中特定数量记录的推荐硬件,sql-server,performance,hardware,Sql Server,Performance,Hardware,对于一个典型的SQL Server数据库表,有多少条记录被认为是正常的?我的意思是,如果数据库中的一些表包含像三或四百万条记录之类的东西,我应该考虑替换硬件、分区表等等吗?我得到了一个查询,它只连接了两个表,并且在WHERE子句中有四个条件和ORDERBY。此查询通常需要3-4秒来执行,但每执行10或20次,可能需要更长的时间(10或20秒)来执行(我认为这与参数嗅探无关,因为我每次都在重新编译查询)。如何改进查询以在不到一秒钟的时间内执行?我如何知道如何才能实现这一目标?我如何知道增加RAM的

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

除非您正在进行一些重磅
连接,否则300-400万行不需要任何额外的硬件。我首先调查了是否有合适的索引,是否正确使用了索引等等。

除非你做了一些重量级的
join
s,否则300-400万行不需要任何额外的硬件。我首先调查是否有合适的索引,是否正确使用了索引等等。

400万条记录并不多。即使是微软Access也可以做到这一点

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

  • 缺乏适当的指标
  • 写得不好的查询
  • 不适合编写性能查询的数据模型
  • 未经参数化的查询对查询缓存进行重击
  • 已禁用,并且您有阻止选择的长时间运行的事务(SQL Server就是这样操作的)。有关这方面的更多信息,请参阅
这些都与硬件无关


除非记录数量巨大或吞吐量极高,否则硬件不太可能成为问题的原因或解决方案。

400万条记录并不多。即使是微软Access也可以做到这一点

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

  • 缺乏适当的指标
  • 写得不好的查询
  • 不适合编写性能查询的数据模型
  • 未经参数化的查询对查询缓存进行重击
  • 已禁用,并且您有阻止选择的长时间运行的事务(SQL Server就是这样操作的)。有关这方面的更多信息,请参阅
这些都与硬件无关


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

非常感谢您的回答!我将在另一个问题上发布我的查询,以讨论其性能。顺便问一下,在sql server中有多少记录被认为是巨大的?这取决于记录的大小和数据库吞吐量。没有固定的号码。我不认为我真的会担心,直到它达到10亿或1亿。超大数据库(VLDB)的定义是主观的/有争议的,Wiki将一个常见的基准列为1Tb或数十亿行-鉴于SQl Server现在在30分钟内加载了1Tb的数据()该定义看起来有些过时。cletus,我把我的问题贴在这里:你能看一下吗?非常感谢你的回答!我将在另一个问题上发布我的查询,以讨论其性能。顺便问一下,在sql server中有多少记录被认为是巨大的?这取决于记录的大小和数据库吞吐量。没有固定的号码。我不认为我真的会担心,直到它达到10亿或1亿。超大数据库(VLDB)的定义是主观的/有争议的,Wiki将一个常见的基准列为1Tb或数十亿行-鉴于SQl Server现在在30分钟内加载了1Tb的数据()该定义看起来有些过时。cletus,我把我的疑问贴在这里:你能看一下吗?