博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于T-SQL性能调优
阅读量:7225 次
发布时间:2019-06-29

本文共 1462 字,大约阅读时间需要 4 分钟。

1. 影响T-SQL性能的因素:

索引
    缺少索引
    没有使用到最佳索引
    聚集索引使用率过低,字段过长或没有聚集索引
    索引个数太多
执行计划
    SQL SERVER不是每次都能够选择到最优的执行计划,一旦选择到了一个相对较差的执行计划,而且该T-SQL调用又非常的频繁,那很可能瞬间使服务器的负载达到90%以上,甚至100%
    
数据量
    数据量过大影响统计信息,从而影响执行计划
    过期的历史数据可能造成无谓的索引检索开销
    大数据量查找间接对Memory、IO造成压力,并最终影响到服务器整体的性能
    锁定的粒度较大从而降低并发
    事务持有时间过长和持有资源过多影响并发
    无谓的资源锁定影响并发
    不设置LOCK_TIMEOUT从而影响并发
并行查询
    max degree of parallelism
编译和重编译
    大量的编译(重编译)会严重影响服务器的性能
系统资源(Cpu、Memory、IO、NetWork)
------------------------------------------
2.如何跟踪T-SQL的性能开销
    STATISTICS
        ①分析数据分布
        ②创建索引调试
        ③检验优化结果 (前后结果对比)
        
        ----------------------------------------------------------------------
        验证方法:
        
        SET STATISTICS IO ON
        --SQL语句
        SET STATISTICS IO OFF
        SET STATISTICS Time ON
        --SQL语句
        SET STATISTICS Time OFF
        ・打开Execution Plan
        (* [degree of parallelism]>1  并行查询计划 (慎用))
        ----------------------------------------------------------------------
        例:语句 select cost1 from salesorders (nolock) where orderid=100001 优化
        

    DMV
        SYS.DM_EXEC_REQUESTS
        SYS.SYSPROCESSES
    SQL Profiler
        
        跟踪
    Performance
    Performance Dashboard
        可视化性能监视
    PSSDiag
        http://support.microsoft.com/kb/830232
3.常见T-SQL问题点
    Where子句中对筛选字段使用函数或计算
    Where子句中不恰当的使用Like ‘%??%’
    Where子句中不恰当的使用OR  (用Union替代)
    无谓的SELECT * 操作
    事务放在循环的外面
    允许脏读的地方没有使用nolock来提高并发
    无谓的JOIN关联
    大访问量的T-SQL编译成本过高
    传入类型(长度)与SQL 字段类型(长度)不一致
    不恰当的使用游标 (使用静态游标 或循环)
    不恰当的使用公用表表达式CTE   (CTE不要写在逻辑判断内部,会引起无法编译,最好按分支单另放在多个SP)
    不恰当的使用Row_number()来分页  (where条件最好在CTE上)
    ISNULL引起的性能瓶颈  (根据需求,取消ISNULL的判断逻辑)
    索引争用问题          (重建非聚集索引)

转载于:https://www.cnblogs.com/streetpasser/archive/2012/12/28/2837358.html

你可能感兴趣的文章
配置 PM2 实现代码自动发布
查看>>
android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
查看>>
iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
查看>>
诡异!React stopPropagation失灵
查看>>
Python_OOP
查看>>
个人博客开发系列:评论功能之GitHub账号OAuth授权
查看>>
mongodb--安装和初步使用教程
查看>>
ES6简单总结(搭配简单的讲解和小案例)
查看>>
text-decoration与color属性
查看>>
如何使用Mybatis第三方插件--PageHelper实现分页操作
查看>>
PyCharm搭建GO开发环境(GO语言学习第1课)
查看>>
Android交互
查看>>
提醒我喝水chrome插件开发指南
查看>>
列表数据转树形数据
查看>>
Java新版本的开发已正式进入轨道,版本号18.3
查看>>
从零开始的webpack生活-0x009:FilesLoader装载文件
查看>>
在electron中实现跨域请求,无需更改服务器端设置
查看>>
gitlab-ci配置详解(一)
查看>>
听说你叫Java(二)–Servlet请求
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>