我有一个基于C#的应用程序,它在基于SQL Server 2008 R2的数据库实例上执行不同的操作。
这是情景:
现在,我遇到了一个问题,即SQL成为瓶颈(IO和CPU)以及我希望能够在启动新进程之前检查SQL是否“过于占用”的进程线程检查如果它太占用了,请将该过程推迟一段时间,稍后再检查。
可以使用简单/基本SQL查询接收有关SQL实例当前加载的信息吗? CPU负载如使用百分比? IO加载如磁盘r / w队列?
任何帮助都将不胜感激。
吉拉德。
答案 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命名空间包含通过代码监视/更改此内容的性能计数器类。