一 背景

     客户数据库经常出现死锁、超时、查询慢等问题,数据库mssql,数据量主要表大概上千W。

二 收集信息
     首先是要找出IO大、查询慢、使用频率高的脚本。直接用Profiler加上限制条件在生产环境收集了。
三 辅助脚本
      DMV动态管理视图是必不可少的。还有其他一些命令用来如
      1 set statistics io on 查看IO
      2 set statistics time on 查看时间
     3 dbcc freeproccache 删除计划缓存(正式环境慎用)
     4 dbcc dropcleanbuffers 清除缓冲区(正式环境慎用)
     5 set statistics profile on查看执行计划,当然也可以用图形的
     6 select identity(bigint, 1, 1) AS RowNumber,* into my_trace from fn_trace_gettable('C:\20141031.trc', default) 把跟踪信息导入表中,方便统计查看
四 优化方式
     首先一般语句是先看执行计划,大的存储过程就在代码断前后插入时间如 print convert(varchar(30),getdate(),121),优化大体从技术和业务两方面入手(不考虑换硬件)。在不同数据量环境下,执行计划的表现是不同的,所以要具体问题具体分析,没有绝对最优。
     1 参数嗅探问题
     2 避免adhoc(即席查询)
     3 是否缺少必要的索引,有索引但没走索引,尽量把scan优化成seek
     4 语句写法是否合理,尽量只查询想要的
     5 临时表和表变量合理使用
     6 触发器尽量少用
     7 业务是否可以优化
     8 查询条件,尽量别在查询条件里用自定义函数,查询条件左边不要做计算
五 总结
     经过这次优化,对DMV,执行计划等有了初步了解,其中看MSDN、SQL大牛博客对自己进步很有帮助,理论结合实际这样印象会比较深刻。

SQL优化小结的更多相关文章

  1. 大型系统开发sql优化总结(转)

    Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...

  2. SQL优化 MySQL版 - 避免索引失效原则(一)

    避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原 ...

  3. SQL优化 MySQL版 - 单表优化及细节详讲

    单表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...

  4. 18.Mysql SQL优化

    18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态 ...

  5. SQL优化之索引分析

    索引的重要性 数据库性能优化中索引绝对是一个重量级的因素,可以说,索引使用不当,其它优化措施将毫无意义. 聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Ind ...

  6. SQL优化案例—— RowNumber分页

    将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术. 下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明. 先来看看我们最常见的分页的样子: WITH CTE AS ...

  7. sql 优化

    1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...

  8. SQL 优化总结

    SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects         SELECT name as '函数名称',xtype as XType  FROM  s ...

  9. (转)SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

随机推荐

  1. HDU4674 Trip Advisor

    Problem Description There is a strange country somewhere which its transportation network was built ...

  2. Centos——升级Python2.7及安装pip

    CentOS升级Python2.7及安装pip 1) 升级Python2.7 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  3. C++使用SQLite步骤及示例

    C++使用SQLite步骤及示例开发环境:Windows 10+VS2013. 开发语言:C++.   1. 下载sqlite文件. 下载网址:http://www.sqlite.org/downlo ...

  4. ios 不通过import 调用其他控制器的方法

    ios 开发过程中在不通过import 调用其他类的方法 //获取类名 Class controller = NSClassFromString(@"controller"); / ...

  5. STM32F4先设置寄存器还是先使能时钟

    http://zhidao.baidu.com/link?url=gdVNuIgLOJcV37QzbCx0IrFip5pskiPQDWpoZayr_xBEe120p4d_iWtrfDl1d4tSFaH ...

  6. Caused by: java.lang.ClassNotFoundException: Didn't find class "** *** ** **" on path: DexPathList[[zip file "/data/app/*** *** ***-2/base.apk"],nativeLibraryDirectories

    Caused by: java.lang.ClassNotFoundException: Didn't find class "** *** ** **" on path: Dex ...

  7. Android使用ImageView显示网络图片

    本案例使用ImageView 简单的实现了网络图片的调用.当中注意事项.由于用到了网络,这里採用了HttpClient方法訪问网络联接,关于怎样使用,可參照文章 Android中使用HttpClien ...

  8. oracle分区表和分区索引概述

    ㈠ 分区表技术概述            ⑴ Range 分区            ① 例子                  create table t         (...列定义...)  ...

  9. 基于日志处理的ElasticSearch的学(gen)习(feng)

    最近学了点solr,然后有听说了ElasticSearch,就想着也学一下ElasticSearch,然后看见了ElasticSearch用于日志的收集的分析,这里就来学习一下. 百度一下Elasti ...

  10. PHP Memcached 面试题

    这里收集了经常被问到的关于memcached的问题 * memcached是怎么工作的? * memcached最大的优势是什么? * memcached和MySQL的query cache相比,有什 ...