zoukankan      html  css  js  c++  java
  • 【查询优化】怎样用SQL语句查看查询的性能指标

    一、SET STATISTICS IO  (有关TSQL语句查询所产生的磁盘活动量)

    --显示有关由Transact-SQL 语句生成的磁盘活动量的信息

    SET STATISTICS IO ON

    --关闭有关由Transact-SQL 语句生成的磁盘活动量的信息

    SET STATISTICS IO OFF

     

    显示的信息如下:

    (SQL语句为:select * from note500)

    其中:

         扫描计数:在查询中涉及到的表被访问的次数;

         逻辑读取:从数据缓冲中读取的数据页数;

         物理读取:从物理磁盘中往缓冲读取的数据页数;

         预读:根据执行计划从物理磁盘中往缓冲读取的数据页数;

         其中对于首次查询一般情况下会有一下关系:逻辑读取=物理读取+预读(其中的具体联系,由于已经在之前的博客文章中提到,就不再详细说明(文章名为【查询优化】MSSQL查询执行流程))

         同理,后面的lob逻辑读取、物理读取、预读概念理解差不多,只是是对相应表进行更新或插入操作时体现。

     

         对于扫描计数,以上图片的查询没有连接查询,因此意义不大。不过,如果连接查询来说,特别是循环查询那种,比如说自连接,如果循环次数越多,则扫描次数也就越多,则会使得查询的效率越低。这是扫描计数是一个比较重要的性能体现参数。

         对于逻辑读取,由于SQLSERVER中对数据进行任何操作都要把数据读入到缓冲当中,如果逻辑读取的页数越多,则查询的性能越低。为此,逻辑读取一般都是查询性能体现的一个重要参数。

    二、SET STATISTICS TIME  (SQL Server解析和编译时间)

    面显示的信息表明,执行这次查询使用了多少CPU运行时间和运行查询使用了多少时间。CPU运行时间是对运行查询所需要的CPU资源的一种相对稳定的测量方法,与CPU的忙闲程度没有关系。但是,每次运行查询时这一数字也会有所不同,只是变化的范围没有总时间变化大。总时间是对查询执行所需要的时间(不计算阻塞或读数据的时间),由于服务器上的负载是在不断变化的,因此这一数据的变化范围有时会相当地大。

    总的来说,量化地来看一个查询语句的性能可以在几个参数进行比较:

    1、CPU时间。比较查询所要占用的CPU资源时间;

    2、I/O。可以比较查询的循环扫描次数和逻辑读取的数据量;

  • 相关阅读:
    A promise tomorrow is worth a lot less than trying today.
    时间相关函数
    JAVA中日期格式转换各个字母代表含义
    参考链接
    修饰器
    最新提案
    ArrayBuffer
    读懂 ECMAScript 规格
    使用markdown写博客
    linux系统界面转换
  • 原文地址:https://www.cnblogs.com/wangfuyou/p/5893927.html
Copyright © 2011-2022 走看看