除了MS分析器之外,还有哪些用于分析SQL服务器存储过程的工具?
有很多工具可以用于在SQL Server中对存储过程进行性能分析,除了MS Profiler之外,还有一些其他的选择。其中一个推荐的工具是SQL Sentry Plan Explorer。这个工具比SSMS更易用和更全面,可以通过分析执行计划来对查询进行性能分析。该工具有免费版和专业版可供选择,免费版在我使用过程中没有发现任何限制。
参考链接:
- [SQL Sentry Plan Explorer](http://www.sqlsentry.com/products/plan-explorer/sql-server-query-view)
- [Stack Overflow Answer](https://stackoverflow.com/a/24115659/3345644)
在SQL Server中,除了MS Profiler之外,还有哪些工具可以用来分析存储过程的性能问题呢?这个问题的出现的原因是因为虽然SQL Server Profiler是一个很好的工具,但是对于一些初次使用它的人来说,可能会花费一些时间去学习如何使用它以及如何得到想要的输出结果。因此,有些人可能会寻求其他的工具来进行存储过程的性能分析。
解决这个问题的方法之一是使用系统存储过程和函数。可以编写一个脚本来利用这些存储过程和函数,以便得到想要的输出结果,然后将其保存下来,每次只需要修改特定的参数即可。这种方法与在Profiler中保存模板非常相似。
下面是一个示例脚本,展示了如何使用系统存储过程和函数来分析存储过程的性能问题:
-- 创建一个表来存储分析结果 CREATE TABLE dbo.ProfilerResults ( EventID INT, EventName NVARCHAR(100), StartTime DATETIME, EndTime DATETIME, Duration INT, SPID INT, DatabaseName NVARCHAR(100), ObjectName NVARCHAR(100), TextData NVARCHAR(MAX) ) -- 使用系统存储过程和函数进行分析 INSERT INTO dbo.ProfilerResults ( EventID, EventName, StartTime, EndTime, Duration, SPID, DatabaseName, ObjectName, TextData ) SELECT p.event_id AS EventID, p.event_name AS EventName, p.start_time AS StartTime, p.end_time AS EndTime, p.duration / 1000 AS Duration, -- 将微秒转换为毫秒 p.spid AS SPID, DB_NAME(p.database_id) AS DatabaseName, OBJECT_NAME(p.object_id) AS ObjectName, t.text AS TextData FROM sys.dm_exec_procedure_stats AS p JOIN sys.dm_exec_sql_text(p.sql_handle) AS t ON p.sql_handle = t.sql_handle WHERE p.database_id = DB_ID() -- 只分析当前数据库中的存储过程 ORDER BY p.start_time DESC
通过使用以上脚本,可以获取存储过程的性能分析结果,并将其保存在一个表中。然后可以根据需要对这些结果进行分析和优化。这种方法可以代替使用SQL Server Profiler进行存储过程的性能分析,同时也具有一定的灵活性和可定制性。
除了SQL Server Profiler之外,还可以使用系统存储过程和函数来进行存储过程的性能分析。通过编写脚本并利用系统存储过程和函数的功能,可以获取存储过程的性能分析结果,并进行进一步的优化。这种方法可以作为SQL Server Profiler的替代方案,同时也具有一定的灵活性和可定制性。
除了MS Profiler之外,还有哪些用于分析SQL Server存储过程的工具?
有人认为SQL Profiler没有问题。诚然,它有其独特之处,但仍然是一个不错的工具。重点是,调优查询工作量比调优单个存储过程的价值通常要小。
我没有和你有相同的经验,即“设置一个分析会话需要很长时间”。
从SQL Server 2008开始,还有扩展事件,不过虽然功能强大,但目前还没有简单的GUI。
更新:如果你已经确定了要分析的存储过程,在SSMS中运行时打开“实际执行计划”选项:这将显示运行时间。你还可以添加“SET STATISTICS IO ON”以获取读/写操作的详细信息。
要查看执行计划,可以尝试使用免费的SQL Sentry Plan Explorer。
当您为SqlServer开发SQL代码时,您的典型开发环境周期是怎样的?我目前使用SQL Server Management Studio来开发存储过程,但是然后我还必须去VS进行任何的逐步调试,这有自己的一套问题,比如无法访问查看临时表或表变量的内容。
如果您想要分析SP以查看为什么运行如此缓慢,您必须打开Profiler,添加过滤器以过滤掉其他人可能在做的事情,然后从管理工具中运行SP,然后将输出转储到一个表中进行分析。与使用C++、C#、C甚至Java编写的代码相比,开发环境相对较为原始。
如果您已经确定了要分析的SP,请在SSMS中运行时打开“实际执行计划”选项:这将显示运行时间。
虽然没有内置的Extended Events GUI,但Jonathan Kehayias开发了一个SSMS扩展插件来支持Extended Events。您可以从以下网址获取:extendedeventmanager.codeplex.com/releases/view/30480
我使用过“实际执行计划”,它有一定的帮助,但与其他分析工具相比,处理数据不够方便。我主要的问题是不容易直接过滤到花费最多时间的计划部分。