Sqlserver表监控:实现更高数据库性能(Sqlserver表监控)

最近,随着Web应用程序的快速发展,作为支撑信息系统的数据库也可能具有相当高的负担。SQL Server表监控是一种数据库性能监控和诊断工具,可以捕捉并监控SQL Server数据库中不断发生的轻微变化以及展示资源使用情况,从而用以提高数据库性能。

SQL Server表监控的实现方式有很多,其中最常用的一种是通过SQL Server Extended Events来实现监控。Extended Events以最少的性能损失新捕捉系统活动和数据库性能指标的情况,可以有效的通过已经存在的资源解决异常的发现和处理。例如,可以使用Extended Events来监控经典的SQL Server数据库架构中的表中的数据变化情况,捕捉行计数有改变的表,检测索引是否有新建和删除,捕捉删除临时表,检查索引值和排序视图、函数、过程的计数等等的变化情况。

具体的SQL Server实现方式:

–创建索引

CREATE INDEX IX_tableName_IndexName

ON tableName

(

IndexCol1

)

–删除索引

DROP INDEX IX_tableName_IndexName on tableName

–监控表记录数变化

–创建一个session

CREATE EVENT SESSION TableMonitor ON SERVER

ADD EVENT sqlserver.sp_statement_started(

ACTION(sqlserver.database_id,sqlserver.object_id,sqlserver.schema_name,sqlserver.lock_mode))

ADD TARGET package0.event_file(SET filename=TableMonitor)

WITH (MAX_MEMORY=4096 KB, MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)

GO

–启用session

ALTER EVENT SESSION TableMonitor ON SERVER

STATE=START

GO

–查询数据库表记录变化

SELECT event_data.value(‘(event/@name)[1]’, ‘NVARCHAR(MAX)’) as event_name,

event_data.value(‘(event/@timestamp)[1]’, ‘NVARCHAR(MAX)’) as event_time,

event_data.value(‘(event/data[@name=”database_id”])[1]’, ‘NVARCHAR(MAX)’) as database_id,

event_data.value(‘(event/data[@name=”object_id”])[1]’, ‘NVARCHAR(MAX)’) as table_id,

event_data.value(‘(event/data[@name=”object_name”])[1]’, ‘NVARCHAR(MAX)’) as table_name

FROM (SELECT CAST(target_data AS XML) AS event_data

FROM sys.dm_xe_session_targets xt

LEFT JOIN sys.dm_xe_sessions xs

ON xs.address=xt.event_session_address

WHERE xs.name=’TableMonitor’) as event_data;

通过上述步骤,我们可以在SQL Server中轻松实现表监控,有效的提高我们的数据库性能。


数据运维技术 » Sqlserver表监控:实现更高数据库性能(Sqlserver表监控)