如何最大限度地减少数据库 A 中昂贵查询对数据库 B、C、D 的影响

use*_*465 6 performance sql-server tempdb

如何配置 SQL Server 以便“数据库 A”中的活动对“数据库 B”中的用户影响最小

上下文

我们的(非常大的)生产 SQL Server 上有很多运行各种“遗留应用程序”的数据库,每个数据库用于特定客户的应用程序实例。

问题

如果“流氓用户”运行非常昂贵的查询——有时来自报告,有时来自应用程序——它会导致“其他数据库”缓慢爬行。

[我知道“根本问题”是昂贵的查询;程序员不应该让它们运行。密集报告应该运行一个单独的报告数据库。程序员应该在大数据集等上进行测试。我的问题与“隔离”数据库对彼此的影响有关。]

我怀疑,但我还没有确认问题出在“tempdb”中,SQL Server 用于排序的临时区域/数据库无法放入内存中。

我看过帖子指出将 tempdb 传播到多个文件。这会有帮助吗?

/sf/ask/50390861/ http://logicalread.solarwinds.com/sql-server-tempdb-best-practices-multiple-files-w01 /#.VdzGxrNv4Uw

Jam*_*oat 2

我建议您查看资源调控器...在同一服务器上存在多个不同工作负载的环境中,资源调控器使您能够区分这些工作负载,并根据您所请求的限制来分配共享资源。指定。这些资源是 CPU、物理 IO 和内存。通过使用资源调控器,您可以:

  1. 在服务于多个客户端工作负载的单个 SQL Server 实例上提供多租户和资源隔离。也就是说,您可以将服务器上的可用资源分配给工作负载,并最大程度地减少工作负载争夺资源时可能出现的问题。
  2. 为多工作负载和多用户环境中的工作负载租户提供可预测的性能并支持 SLA。
  3. 隔离和限制失控查询或限制 DBCC CHECKDB 等操作的 IO 资源,这些操作可能会使 IO 子系统饱和并对其他工作负载产生负面影响。
  4. 为资源使用费用退款添加细粒度的资源跟踪,并为服务器资源的使用者提供可预测的计费。

https://msdn.microsoft.com/en-us/library/bb933866.aspx