监视SQL性能和负载

时间:2011-01-24 10:39:19

标签: sql sql-server

我有一个基于C#的应用程序,它在基于SQL Server 2008 R2的数据库实例上执行不同的操作。

这是情景:

  • 只有一个SQL实例。
  • 有多个数据库(约50个)。
  • 应用程序执行不同的操作,包括IO和CPU操作(在SQL服务器上)。
  • 代码是多线程的,这意味着多个线程一次访问SQL实例。
  • SQL Server 与应用程序服务器在同一台计算机上

现在,我遇到了一个问题,即SQL成为瓶颈(IO和CPU)以及我希望能够在启动新进程之前检查SQL是否“过于占用”的进程线程检查如果它太占用了,请将该过程推迟一段时间,稍后再检查。

可以使用简单/基本SQL查询接收有关SQL实例当前加载的信息吗? CPU负载如使用百分比? IO加载如磁盘r / w队列?

任何帮助都将不胜感激。

吉拉德。

1 个答案:

答案 0 :(得分:2)

性能始终是一个多方面的领域。您如何确定SQL是瓶颈?您是否尝试过更好的索引并优化查询?

要回答您的问题,实际上很容易查询性能监视器计数器,SQL Server会在安装产品时安装一堆计数器。

转到开始菜单并运行'perfmon',然后添加一些计数器以查看各种SQL Server类别,甚至更基本的内存和CPU类别。

从那里,您可以看到要监控的计数器。您可以使用外部工具监视计数器以查看它们是否超过阈值,或将收集的数据写入SQL表,文件,甚至通过代码监视计数器。

有关详细信息,请参阅以下帖子。

http://blogs.msdn.com/b/granth/archive/2008/11/07/querying-perfmon-data-from-sql.aspx

http://www.mssqltips.com/tip.asp?tip=1039

http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/

此外,System.Diagnostics命名空间包含通过代码监视/更改此内容的性能计数器类。