在SQL Server之类的DBMS中执行的查询的性能(响应时间)是否会受到运行服务器的计算机上发生的任何事情的影响?更具体地说,当运行几个持续检查和清理机器的Windows进程并处理从网络接收的数据时,预计响应时间会增加吗?
感谢。
答案 0 :(得分:0)
是的,数据库服务器正在与计算机上运行的任何其他资源共享资源,因此任何资源密集型进程都可能会显着影响数据库性能。
一个重要的资源是记忆。如果SQL Server有任何用处,它将默认使用所有可用内存。如果您正在服务器上运行任何其他进程,则应限制SQL Server的内存使用量,以便为其他进程留出空间,以减少内存交换。
答案 1 :(得分:0)
任何程序的四个关键资源都是可用的内存,处理器,磁盘空间和磁盘使用情况。
让我们依次调查每一个。可用内存在SQL Server中管理良好(请参阅here)。默认行为是从一堆内存开始,然后根据需要增加它。如果您的查询负载没有变化,那么SQL Server应该达到最大内存量并停止增长。听起来您的查询负载随着时间的推移是一致的,因此内存不会是一个大问题。此外,许多SQL服务器配置会修复内存大小以避免干扰其他处理器。
处理能力。这可能很重要。 SQL Server需要处理能力。处理器可能被其他Windows进程使用。这会减慢查询速度,特别是那些正在处理(而不是I / O)约束的查询。但是,这可能会在多处理器计算机上得到缓解。可以为给定的SQL Server实例分配一定数量的处理器。其余的可以用于Windows。
磁盘空间。这几乎没有影响。通常,需要的磁盘是可用的,或者不是(并且需要它的查询失败)。一个例外是临时磁盘空间,其可用性会影响查询执行计划。通常,临时空间会自行放置,以避免与其他进程发生不必要的冲突。
I / O带宽。 SQL Server需要通过文件系统与磁盘进行通信。这可能是真正的性能阻力,它可能发生在多个不同的级别。操作系统本身可能已经饱和了I / O调用,从而减慢了数据库的速度。 CPU和磁盘之间的网络可能会饱和,从而降低了读写速度。由于多个并发操作(即使来自不同的服务器),磁盘系统本身也可能很慢。在虚拟环境中,这可能会变得更加复杂。
答案是肯定的。 Windows进程可能会影响SQL查询的性能。我最好的猜测是,影响可能是吃掉处理器还是占用磁盘带宽。