应用场景
我在 SQL Server 2005 Express Edition 实例中运行一个 SQL 2005 数据库。有两个不同的 .Net 应用程序在运行,它们不断连接到此数据库并执行各种任务。一个应用程序以每 5 秒 0 到 200 条记录的速率插入数据,这些插入需要先进行一些查找才能完成。然后,第二个应用程序每 30-60 秒轮询一次数据库并对这些数据进行分析,该应用程序还有一个 GUI。
这两个应用程序和数据库都在未连接到网络的单个独立计算机上运行。该机器不是服务器,只是一台运行全套服务版 XP 的普通 32 位 PC,它包含 4 GB 的 RAM。
问题
带有 GUI 的应用程序偶尔会变得迟缓,有时会在短短的 10-30 秒内完全没有响应,但通常会恢复。老实说,目前“错误”报告中的可靠信息很少,我唯一能确定的是,无论什么问题,不知何故都是我的错。对于这样的问题,我通常会发现,一旦我记录了一些可靠的性能数据,并且可以显示实际响应时间等,问题就会“神奇地”不再是问题。因此,我为这两个 .Net 应用程序设置了一些性能计数器(使用 perfmon.exe),并在等待相当长一段时间后再进行分析。但我目前没有为 SQL Server 实例设置任何计数器。
问题)
我应该使用哪些性能计数器来监控 SQL 实例的内存、CPU、性能等?
您能给我指出一些解释每个计数器含义的优秀文章吗?我发现使用 SQL Server 性能监视器计数器的提示Brad McGehee 的这篇文章很不错,但可能有点过时了 - 有些技巧似乎只适用于 2000 年的实例。
还有其他提示、技巧等吗?
谢谢,
答案1
我认为您的问题与数据库中的锁有关。此外,如果注入数据的应用程序使用动态 SQL,您的 CPU 将处于高负载状态。
尽管 sql express 不包含分析器,但有第三方应用程序可以执行相同的工作,我推荐 AnjLab.SqlProfiler。
欲了解更多信息,您可以阅读这里有一些文章
答案2
因为我是新手,所以不能发布两个链接。另一个很棒的网站是SQL 服务器性能