0

在像 SQL Server 这样的 DBMS 中执行的查询的性能(响应时间)是否会受到运行服务器的机器上发生的任何事情的影响?更具体地说,当运行几个不断检查和清理机器并处理从网络接收的数据的 Windows 进程时,响应时间是否会增加?

谢谢。

4

2 回答 2

0

是的,数据库服务器与机器上运行的其他任何东西共享资源,因此任何资源密集型进程都可能显着影响数据库性能。

一种重要的资源是内存。默认情况下,如果 SQL Server 有任何用途,它会用完所有可用内存。如果您在服务器上运行任何其他进程,则应限制 SQL Server 的内存使用,使其分配得更少,为其他进程留出空间,以减少内存交换。

于 2013-06-23T10:13:16.340 回答
0

任何程序的四个关键资源是可用内存、处理器、磁盘空间和磁盘使用情况。

让我们依次研究每一个。SQL Server 中的可用内存得到了很好的管理(请参阅此处)。默认行为是从一堆内存开始,然后根据需要增加它。如果您的查询负载没有变化,则 SQL Server 应该达到最大内存量并停止增长。听起来您的查询负载随着时间的推移是一致的,所以内存不会是一个大问题。此外,SQL Server 的许多配置都会固定内存大小以避免干扰其他处理器。

处理能力。这可能是一个大问题。SQL Server 需要处理能力。处理器可能被其他 Windows 进程使用。这会减慢查询速度,尤其是那些处理(而不是 I/O)受限的查询。但是,这可能会在多处理器机器上得到缓解。一个给定的 SQL Server 实例可能被分配了一定数量的处理器。其余的可用于 Windows。

磁盘空间。这影响不大。通常,所需的磁盘可用或不可用(并且需要它的查询失败)。一个例外是临时磁盘空间,其可用性会影响查询执行计划。通常,临时空间放在自己的驱动器上,以避免与其他进程发生不必要的冲突。

输入/输出带宽。SQL Server 需要通过文件系统与磁盘进行通信。这可能是一个真正的性能拖累,它可能发生在多个不同的级别。操作系统本身可能会因 I/O 调用而饱和,从而降低数据库速度。CPU 和磁盘之间的网络可能会饱和,从而降低读写速度。由于多个并发操作(即使来自不同的服务器),磁盘系统本身可能会很慢。这在虚拟环境中会变得更加复杂。

答案是“是”。Windows 进程会影响 SQL 查询的性能。我最好的猜测是,影响要么是占用处理器,要么是占用磁盘带宽。

于 2013-06-23T16:07:17.260 回答