湖中仙人 2024-06-13 10:21 采纳率: 14.3%
浏览 2

查看报表操作时消耗的CPU和磁盘

在操作一张报表时,如何在sql server 里面 查看操作报表消耗的CPU和磁盘资源是多少

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-13 10:21
    关注

    引自免费微信小程序:皆我百晓生

    要监控SQL Server中执行特定操作(如运行报表)所消耗的CPU和磁盘资源,可以利用SQL Server Profiler或动态管理视图(Dynamic Management Views, DMVs)来完成。这里提供一个基于DMVs的方法,因为它不需要额外安装工具,并且可以在SQL Server内部进行。

    使用动态管理视图 (DMVs)

    1. 监控当前会话的资源使用情况

    首先,可以通过查询sys.dm_exec_sessionssys.dm_exec_requests来获取关于当前所有会话的信息,包括CPU和I/O使用情况。下面是一个示例查询,用于显示当前正在运行的报表查询的资源消耗情况:

    SELECT 
        s.session_id,
        r.command,
        r.cpu_time,
        r.total_elapsed_time,
        r.logical_reads,
        r.reads,
        r.writes
    FROM 
        sys.dm_exec_requests r
    INNER JOIN 
        sys.dm_exec_sessions s ON r.session_id = s.session_id
    WHERE 
        r.status = 'running' AND r.command LIKE '%报表%' -- 这里假设报表查询包含关键字"报表"
    ORDER BY 
        r.cpu_time DESC;
    

    在这个查询中,cpu_time表示自请求开始以来消耗的CPU时间(单位:毫秒),logical_reads表示逻辑读取次数,readswrites分别表示物理读写次数。

    2. 捕获历史资源使用情况

    如果需要捕获报表操作的历史资源使用情况,可以使用sys.dm_exec_query_stats结合sys.dm_exec_sql_textsys.dm_exec_query_memory_grants来获取更详细的统计信息。这可以帮助理解长时间段内的资源消耗趋势。

    WITH QueryStats AS (
        SELECT 
            qs.plan_handle,
            qs.sql_handle,
            qs.execution_count,
            qs.total_logical_reads,
            qs.total_worker_time,
            qs.total_elapsed_time,
            qs.total_reads,
            qs.total_writes,
            qs.total_rows,
            qs.total_logical_writes,
            qs.statement_start_offset / 2,
            qs.statement_end_offset / 2
        FROM 
            sys.dm_exec_query_stats qs
    )
    SELECT 
        q.text,
        qs.execution_count,
        qs.total_logical_reads,
        qs.total_worker_time,
        qs.total_elapsed_time,
        qs.total_reads,
        qs.total_writes,
        qs.total_rows,
        qs.total_logical_writes
    FROM 
        QueryStats qs
    CROSS APPLY 
        sys.dm_exec_sql_text(qs.sql_handle) q
    WHERE 
        q.text LIKE '%报表%' -- 同样假设报表查询包含关键字"报表"
    ORDER BY 
        qs.total_worker_time DESC;
    

    这个查询将返回所有包含“报表”的查询的历史资源使用情况。

    注意事项

    • 上述查询中的关键字搜索可能需要根据实际情况调整。
    • 使用LIKE操作符可能会影响性能,特别是在大型数据库环境中。
    • 需要定期清理sys.dm_exec_query_stats缓存,以避免内存消耗过多。

    通过上述方法,可以有效地监控和分析SQL Server中报表操作的资源消耗情况。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画