前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLServer大事务巡检

SQLServer大事务巡检

原创
作者头像
保持热爱奔赴山海
发布2023-12-19 10:27:59
2300
发布2023-12-19 10:27:59
举报
文章被收录于专栏:数据库相关

工作中,需要对SQL Server做些日常基础指标的监控和告警

大事务监控

代码语言:sql
复制
  SELECT top 10 
        b.session_id 'Session ID',
        CAST(Db_name(a.database_id) AS VARCHAR(20)) 'Database Name',
        c.command,
        Substring(st.TEXT, ( c.statement_start_offset / 2 ) + 1,
        ( (
        CASE c.statement_end_offset
            WHEN -1 THEN Datalength(st.TEXT)
            ELSE c.statement_end_offset
        END 
        -
        c.statement_start_offset ) / 2 ) + 1)                                                             
        statement_text,
        Coalesce(Quotename(Db_name(st.dbid)) + N'.' + Quotename(
        Object_schema_name(st.objectid,
                    st.dbid)) +
                    N'.' + Quotename(Object_name(st.objectid, st.dbid)), '')    
        command_text,
        c.wait_type,
        c.wait_time,
        a.database_transaction_log_bytes_used / 1024.0 / 1024.0                 'MB used',
        a.database_transaction_log_bytes_used_system / 1024.0 / 1024.0          'MB used system',
        a.database_transaction_log_bytes_reserved / 1024.0 / 1024.0             'MB reserved',
        a.database_transaction_log_bytes_reserved_system / 1024.0 / 1024.0      'MB reserved system',
        a.database_transaction_log_record_count                           
        'Record count'
    FROM   sys.dm_tran_database_transactions a
        JOIN sys.dm_tran_session_transactions b
            ON a.transaction_id = b.transaction_id
        JOIN sys.dm_exec_requests c
            CROSS APPLY sys.Dm_exec_sql_text(c.sql_handle) AS st
            ON b.session_id = c.session_id
        -- where a.database_transaction_log_bytes_used / 1024.0 / 1024.0 > 5  -- 一般建议只监控超过5MB的事务
    ORDER  BY 'MB used' DESC ;

大事务
大事务

慢查询

代码语言:sql
复制
-- 下面的sql里面限定的阈值5秒
SELECT
        r.session_id,
        r.start_time,
        TotalElapsedTime_ms = r.total_elapsed_time,           
        r.[status],           
        r.command,           
        DatabaseName = DB_Name(r.database_id),           
        r.wait_type,
        r.last_wait_type,           
        r.wait_resource,           
        r.cpu_time,           
        r.reads,           
        r.writes,           
        r.logical_reads,           
        t.[text] AS [executing batch],           
        SUBSTRING(
                        t.[text], 
                        r.statement_start_offset / 2, 
                        ( CASE 
                            WHEN r.statement_end_offset = -1 THEN DATALENGTH (t.[text]) 
                            ELSE r.statement_end_offset  
                            END - r.statement_start_offset 
                        ) / 2 
                ) AS [executing statement],
    p.query_plan
    FROM sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
    CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) AS p
    where r.total_elapsed_time >5000
    ORDER BY r.total_elapsed_time DESC;

参考:

https://www.sqlservercentral.com/articles/monitoring-longest-running-transaction-using-sql-server-agent-alerts

https://success.blueyonder.com/s/article/How-to-see-long-running-open-transactions-in-a-SQL-Server-database?language=en_US

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大事务监控
  • 慢查询
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档