zoukankan      html  css  js  c++  java
  • SQL性能优化前期准备-清除缓存、开启IO统计

    文章来至:https://www.cnblogs.com/Ren_Lei/p/5669662.html

    如果需要进行SQl Server下的SQL性能优化,需要准备以下内容:

    一、SQL查询分析器设置:

    1、开启实际执行计划跟踪。

    2、每次执行需优化SQL前,带上清除缓存的设置SQL。

    平常在进行SQL Server性能优化时,为了确保真实还原性能问题,我们需要关闭SQL Server自身的执行计划及缓存。可以通过以下设置清除缓存。

    1 DBCC DROPCLEANBUFFERS  --清除缓冲区
    2 DBCC FREEPROCCACHE  --删除计划高速缓存中的元素

    3、开启查询IO读取统计、查询时间统计。

    SET STATISTICS TIME ON --执行时间
    SET STATISTICS IO ON --IO读取


    开启设置后,执行SQL效果如下:

     针对其中的每个图标节点,鼠标滑上去的时候,可以看到具体的执行信息。如下图:

    可以通过查看谓词、对象、输出列表,分析问题点或者创建优化索引等。

    当然你也可以换一种查看方式,点击右键选择显示执行计划XML。

    还有一点特别说明的是:当你SQL很长逻辑关系很复杂的时候,执行计划会是一个很大的网状关系图,你会发现在右下角有一个加号的按钮,点击后一个缩略图。通过缩略图你可以很方便的定位执行节点,用起来还比较好用。

    二、针对SQL Server Profile,SQL查询跟踪器进行分析。

    1、打开方式:SQL Server查询分析器->工具,SQL Profile。打开方式截图:

    2、连接&特殊设置:

    打开后界面如下图:

    设置正确连接信息后,点击连接,弹出如下界面。按照图中操作步骤进行设置。

    其中DatabaseId、HostName可以在查询分析器中进行查询,脚本如下:

    1 SELECT DB_ID()
    2 SELECT DB_NAME()
    3 SELECT HOST_ID()
    4 SELECT HOST_NAME()

    实际上HostName就是你的本机计算机名。

    最终设置完之后点击运行。正常跟踪的效果如图:

    重点关注其中的Duration、Writes、Reads、CPU,分析对象是TextData,及执行的语句。其中Duration为毫秒数,1000即为1秒。

    ——————————————————————————————————————————

    应用总结&建议

    上面应用配合方式是:

    1、先通过SQL查询跟踪器,跟踪出你所以执行的SQL,然后定位其中Duration比较的SQL 或者超过性能标准的SQl(比如页面访问3s、5s、8s)、报表30s等。

    2、将问题SQL在查询分析器中进行分析,主要通过执行计划及IO统计定位耗时占比高及IO读取大的地方,然后逐步的调整SQL逻辑关系(比如添加业务条件过滤缩小集合,建立索引、调整like匹配等),优化后再重新进行跟踪看看是否有效果,最终达到SQL的优化目的。

    写到这里,基本上我常用的SQL性能优化的方式就已经讲完了,希望给大家能提供帮助。

    绝对干货,转载请注明出处。原文地址

  • 相关阅读:
    CSS浮动(float、clear)通俗讲解
    JAVA 类的加载
    数据库操作 delete和truncate的区别
    正则表达式 匹配相同数字
    Oracle EBS OM 取消订单
    Oracle EBS OM 取消订单行
    Oracle EBS OM 已存在的OM订单增加物料
    Oracle EBS OM 创建订单
    Oracle EBS INV 创建物料搬运单头
    Oracle EBS INV 创建物料搬运单
  • 原文地址:https://www.cnblogs.com/keepSmile/p/9523515.html
Copyright © 2011-2022 走看看