• MSSQL·查询TSQL语句执行时间的三种方法


    阅文时长 | 0.23分钟 字数统计 | 420.8字符
    主要内容 | 1、引言&背景 2、自定义时间变量求差法 3、MSSQL内置方法 4、MSSQL选项开启时间统计 5、声明与参考资料
    『MSSQL·查询T-SQL语句执行时间的三种方法』
    编写人 | SCscHero 编写时间 | 2021/5/22 AM12:30
    文章类型 | 系列 完成度 | 已完成
    座右铭 每一个伟大的事业,都有一个微不足道的开始。

    一、引言&背景   完成度:100%

    a) 应对问题

    1. 如何统计T-SQL语句的执行时间?
    2. 统计T-SQL语句的执行时间有哪几种方法?
    3. 统计T-SQL语句的执行时间的几种方法有哪些优缺点?

    b) 应用场景

    1. 需要统计T-SQL、存储过程、视图、函数等执行时间的场景。
    2. DB性能调优,对比不同的方式执行时间。

    c) 解决原理&方法

    1. 自定义时间变量求差法。
    2. MSSQL内置统计信息选项。
    3. 默认开启时间统计信息。

    二、自定义时间变量求差法   完成度:100%

    实现方式如下。

    DECLARE @VarDatetime DATETIME
    SET @VarDatetime=GETDATE()
    /*此处写入需要查询执行时长的语句*/
    SELECT [语句执行花费时间(毫秒)]=DATEDIFF(MS,@VarDatetime,GETDATE())
    

    【TIPS】此种方法的执行时间相比MSSQL内置统计时间略长,有一种说法是跟调用了聚合函数有关。

    三、MSSQL内置方法   完成度:100%

    a) 语法简介

    SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
    SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
    SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。

    b) 示例Demo

    SET STATISTICS TIME ON
    SET STATISTICS IO ON
    SET STATISTICS PROFILE ON
    GO
    /*此处写入需要查询执行时长的语句*/ 
    GO
    SET STATISTICS PROFILE OFF
    SET STATISTICS TIME OFF
    SET STATISTICS IO OFF
    
    

    c) 可获取信息

    此种数据统计方法,可从消息中查看CPU时间和总时间。并可获得扫描计数、逻辑读取、物理读取、预读次数、逻辑读取、物理读取、lob预读等信息。可从结果集中,获取IO执行时间和CPU执行时间。

    d) 数据深度分析

    占用时间:当前这一步的总时间。如果占用时间比CPU时间大很多,那开销主要用于IO上。
    逻辑读取次数:从数据缓存读取的页数。数字越小,性能越好。在性能调优中这个数字非常重要。因为它不会随着执行又执行而改变,除非数据或查询语句有变动。在进行性能调优时,这个可以作为性能提升的重要参考。
    物理读取次数:从磁盘读取的页数。这个会随着执行又执行而改变。大多数情况下,连续第2次的执行时,它的物理读取值为0(因为会加载到内存中去)。

    ----来自《sqlserver 查看脚本执行时间》

    四、MSSQL选项开启时间统计   完成度:100%

    工具->选项->查询执行->高级,如下图所示:


    ----来自《SQLServer 查看SQL语句的执行时间》

    五、声明与参考资料   完成度:100%

    SQLServer 查看SQL语句的执行时间
    sqlserver 查看脚本执行时间

    原创博文,未经许可请勿转载。

    如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

  • 相关阅读:
    网络基础 港湾FlexHammer5010交换机镜像端口配置
    HttpWatch HttpWatch时间表(HttpWatch Time Charts)
    网络基础 计算机网络速率,带宽,吞吐量概念
    Kubernetes 1.11.2概述和搭建(多节点)
    Ubuntu 搭建docker registry 私有仓库
    Ubuntu 搭建etcd
    python 多线程删除MySQL表
    python 统计MySQL表信息
    基于Prometheus的Pushgateway实战
    基于docker 搭建Elasticsearch6.2.4(centos)
  • 原文地址:https://www.cnblogs.com/SCscHero/p/14797902.html
Copyright © 2020-2023  润新知