青少年编程与数学 02-002 Sql Server 数据库应用 18课题、性能监控
本课题介绍了SQL Server中性能监控的工具和方法,包括活动监视器、性能仪表板、数据收集器、SQL Server Profiler、查询编辑器、监控日志和性能日志以及动态管理视图(DMVs)。
课题摘要:
本课题介绍了SQL Server中性能监控的工具和方法,包括活动监视器、性能仪表板、数据收集器、SQL Server Profiler、查询编辑器、监控日志和性能日志以及动态管理视图(DMVs)。这些工具帮助监控数据库性能指标,如CPU使用率、磁盘I/O、内存使用情况,并诊断性能问题。课题还介绍了Extended Events(XEvents)的使用,这是一种轻量级的诊断工具,用于收集SQL Server运行时的信息,具有低性能开销和灵活的配置。通过SSMS的图形界面或T-SQL命令,可以创建、管理和查询Extended Events会话,以诊断性能问题。正确使用这些性能监控工具,可以有效地优化数据库性能,减少潜在的性能瓶颈。
一、性能监控
在 SQL Server Management Studio (SSMS) 中进行数据库性能监控,你可以使用多种工具和方法,以下是一些主要的步骤和技巧:
-
活动监视器:
- 打开活动监视器:你可以通过点击工具栏上的活动监视器图标、按键盘上的
Ctrl+Alt+A
快捷键,或者在 SQL Server 实例上的对象浏览器上点击右键菜单来打开活动监视器。 - 监控性能指标:活动监视器可以实时监控预先定义的一组重要的 SQL Server 性能指标,例如 CPU 使用率、磁盘 I/O、内存使用情况等。
- 权限要求:要查看实际的活动,必须拥有 VIEW SERVER STATE 权限。
- 打开活动监视器:你可以通过点击工具栏上的活动监视器图标、按键盘上的
-
性能仪表板(适用于 SSMS 版本 17.2 及更高版本):
- 查看性能仪表板:性能仪表板提供了一个直观的视图,用于快速了解 SQL Server 或 Azure SQL 数据库的性能状态。
- 识别性能问题:性能仪表板有助于快速识别是否遇到性能瓶颈,例如 CPU 瓶颈、I/O 瓶颈等,并可以捕获可能解决该问题所需的附加诊断数据。
-
数据收集器:
- 配置数据收集器:数据收集器可以从 SQL Server 实例收集性能指标,并保存在一个本地仓库里,用于后续分析。
- 自定义监控指标:数据收集器允许你定义要监控的指标,并且可以使用 T-SQL 代码或 API 自定义数据收集器。
-
SQL Server Profiler:
- 捕获事件:SQL Server Profiler 可以捕获 SQL Server 的活动,包括长时间运行的查询、死锁、阻塞等性能问题。
- 分析和诊断:分析捕获的数据,诊断性能问题和查询优化。
- 保存和重放跟踪:将跟踪数据保存到文件中,以便后续分析或重放,测试性能改进。
-
查询编辑器:
- 使用查询编辑器运行 SQL 语句,例如
DBCC SQLPERF(LOGSPACE)
来查看数据库的日志空间信息。 - 执行
sp_lock
存储过程来查看当前的锁信息,帮助识别潜在的锁争用问题。
- 使用查询编辑器运行 SQL 语句,例如
-
监控日志和性能日志:
- 查看 SQL Server 错误日志和性能日志,以获取有关数据库操作的详细信息。
-
使用动态管理视图 (DMVs):
- 执行 DMV 查询,如
sys.dm_exec_query_stats
,来获取关于查询性能的详细信息。
- 执行 DMV 查询,如
通过这些工具和方法,你可以有效地监控 SQL Server 数据库的性能,并采取相应的优化措施。记得在进行性能监控时,要考虑到跟踪操作对数据库性能的潜在影响,并确保遵守相关的数据保护法规。
二、使用 XEvents
Extended Events(简称 XEvents 或 XE)是 SQL Server 提供的一种轻量级的诊断工具,它可以用来收集有关 SQL Server 运行时的信息。相比于传统的 Profiler 或者 SQL Trace,Extended Events 具有更低的性能开销,并且可以更灵活地配置事件跟踪规则。
以下是如何设置和使用 Extended Events 的基本步骤:
创建 Extended Event 会话
-
启动 SQL Server Management Studio (SSMS) 并连接到目标 SQL Server 实例。
-
新建 Extended Events 会话:
- 打开“新建查询”窗口,输入以下 T-SQL 语句来创建一个新的 Extended Event 会话:
CREATE EVENT SESSION [session_name] ON SERVER ADD EVENT sqlserver.sql_statement_completed (ACTION(sqlserver.client_app_name), ACTION(sqlserver.client_hostname), ACTION(sqlserver.database_name), ACTION(sqlserver.nt_user_name)) ADD TARGET package0.event_file (SET filename = N'path\to\your\file') WITH (MAX_DISPATCH_LATENCY = 3 SECONDS);
在这里,
[session_name]
是你给会话起的名字,sql_statement_completed
是你要监控的事件类型,ACTION()
是附加的动作信息,而ADD TARGET
表示你希望将事件数据发送到哪里,这里选择了文件目标。 -
启动 Extended Event 会话:
- 创建会话后,需要启动它才能开始收集数据:
ALTER EVENT SESSION [session_name] ON SERVER STATE = START;
查询 Extended Events 数据
-
从文件目标读取数据:
- 如果你将数据输出到了文件,可以使用以下命令来读取数据:
USE [master]; GO DECLARE @file_path NVARCHAR(4000) = N'path\to\your\file'; SELECT * FROM ::fn_trace_gettable(@file_path, DEFAULT);
-
从内存目标读取数据:
- 如果目标是内存,可以直接查询
sys.fn_xe_session_targets
函数来获取数据:
USE [master]; GO SELECT * FROM sys.fn_xe_session_events(N'[session_name]', N'target_data');
- 如果目标是内存,可以直接查询
管理 Extended Event 会话
-
停止 Extended Event 会话:
ALTER EVENT SESSION [session_name] ON SERVER STATE = STOP;
-
删除 Extended Event 会话:
DROP EVENT SESSION [session_name] ON SERVER;
注意事项
- 确保你有权限创建和管理 Extended Events。
- 根据实际需要配置事件和动作,避免收集过多不必要的数据。
- 监控 Extended Events 的性能影响,特别是在生产环境中使用时。
通过 Extended Events,你可以有效地诊断 SQL Server 的性能问题和其他运行时的问题,同时尽量减少对服务器性能的影响。
三、XEvents图形界面
要使用SQL Server Management Studio (SSMS) 19.X版本中的XEvents探查器来监控SQL SERVER,您可以按照以下步骤操作:
-
打开SQL Server Management Studio:首先,启动SSMS应用程序。
-
连接到SQL Server数据库引擎实例:在SSMS中,连接到您想要监控的SQL Server数据库引擎实例或localhost。
-
访问XEvent探查器:在对象资源管理器中,找到XE探查器菜单项,点击“+”号将其展开。
-
选择会话类型:若想要在会话中查看所有事件,双击“标准”。若想要查看记录的SQL语句,单击“T-SQL”。如果尚未创建会话,将为您创建一个。
-
查看捕获的事件:在选择了会话类型之后,您现在可以查看会话捕获的事件。
请注意,XEvent探查器功能仅在SQL Server Management Studio (SSMS) v17.3或更高版本中可用,因此请确保您使用的是SSMS 19.1版本。 通过这些步骤,您可以利用SSMS中的XEvents探查器来监控SQL Server的运行情况,这对于性能调优和问题诊断都是非常有帮助的。