SQL Server 数据库优化剖析

时间:2021-04-19 13:22:16

一、SQL Profiler

事件类 Stored Procedures\RPC:Completed TSQL\SQL:BatchCompleted

事件关键字段 EventSequence、EventClass、SPID、DatabaseName、Error、StartTime、TextData、 HostName、ClientProcessID、ApplicationName、 CPU、Reads、Writes、Duration、RowCounts

  1、跟踪慢SQL

    SQL Server 数据库优化剖析

  2、跟踪SQL执行错误

    SQL Server 数据库优化剖析

    SQL Server 数据库优化剖析

    3、调试中找到SQL

    以特殊字符作为筛选条件

    SQL Server 数据库优化剖析

  4、T-SQL查询trace表

    a、设置抓取的时候段

         b、保持成文件 然后用下面语句查询文件

SELECT  EventSequence,SPID,RequestID,DatabaseId,DatabaseName
,LoginName,StartTime,EndTime, TextData,Error
,Duration/1000 AS Duration,Reads,CPU,Writes,RowCounts
,HostName,ClientProcessID,ApplicationName
INTO bak.dbo.trace
FROM ::fn_trace_gettable('C:\trace\DB50 20150623.trc', default)

二、表存储结构

    1、页 结构

   SQL Server 数据库优化剖析

  2 区结构

    SQL Server 数据库优化剖析

   3 文件存储

   SQL Server 数据库优化剖析

 4 、基表

  SQL Server 数据库优化剖析

5、堆表

  SQL Server 数据库优化剖析

7、聚集索引

 SQL Server 数据库优化剖析

8、 普通索引

  SQL Server 数据库优化剖析

三、索引优化

1、选择性高

  唯一性高的字段放最前面

2、覆盖索引

  Select、Where、Orderby字段都在索引中 或者 INCLUDE中 这样就会走到索引

3、控制索引数量,窄索引

  SQL Server 数据库优化剖析

此图索引作用不大

 

4、改善SQL语句

  a、SQL尽量简单

  b、 参数化SARG的定义 列名  操作符  <常数 或 变量> Name=’张三’ and 价格>5000  

  c、非SRAG name like ‘%张’ Name=’张三’ and 价格>5000 NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE

四、执行计划

--显示统计信息
SET STATISTICS IO ON
SET STATISTICS TIME ON
SELECT * FROM dbo.FreezeUserMoney

开启执行重点看下面几个地方

SQL Server 数据库优化剖析