这段时间做一个SQL性能优化的案例分析, 整理了一下过往的案例,发现一个比较有意思的,拿出来给大家分享。

这个项目是我在项目开展2期的时候才加入的, 之前一期是个金融内部信息门户, 里面有个功能是收集各个上市公司的财报, 然后做各种分析, 数据图表展示, 使用的人数并不多, 仅百人左右。

2期打算面向行外用户, 刚开始预计同时在线人数不超过50, 就以50访问用户/秒的性能测试, 结果在把1期的图表类数据展示响应基本在5分钟左右, 属于严重不可用, 说说我们的服务器配置, 有2台网站前端承载用户访问, 做F5负载均衡, 也就是说一台约25用户/秒的访问量, 有2台数据库做AlwaysOn。通过代码断点跟踪很快确定了性能瓶颈在数据库响应这一层。

既然确定了是数据库的性能问题, 接下来我们就准备开始对服务器的性能进行跟踪, 我们选取了常用的性能指标(内存,CPU,网络,硬盘IO)进行跟踪,然后跑我们的性能测试。

结果显示, CPU基本在测试的过程中是100%, 内存也占用了98%, 数据库硬盘IO的响应时间也超过了2分钟,内存指标是正常的, 由此我们可以得出几个假设:

数据库在不断进行TSQL语句编译,在高并发的情况下可能造成CPU占用率一直很高。

数据库有索引查询需要优化。

数据可能存在死锁

确实存在一些表存在大量数据的情况

事实上我们检查到程序员在编写代码的时候, 并没有利用到正确使用数据库变量,而是动态的生成T-SQL语句, 导致在高并发的时候, 频繁的进行语句编译,这印证了我们的第一点。

再进一步的我们通过Profiler工具找到响应时间较长的语句进行分析, 查看实际的执行计划,  优化了查询条件, 增加了索引,及查询条件优化

令我们意外的发现,是在某一时刻,进行简单的一个表进行查询, 也会长达数十分钟之久, 执行EXECUTE sp_lock, 查到其中一个应用程序正在使用insert into select from 批量插入数据到这一表中, 造成这一表读被锁定, 改用bulk insert解决了问题

1期也使用了一年中, 其实一些表的数据确实也已达到上亿的级别, 考虑到数据图表展示都是以一个月的数据为单位, 我们对这个表的数据进行了分区, 每个月的数据以单独的数据文件进行存储,实际上也取得了很好的效果。

最后在性能测试中, 我们的响应时间从原来的5分钟减少到2秒内, 符合了我们需要。

转载于:https://www.cnblogs.com/frankzye/p/5808909.html

SQL性能优化案例分析相关推荐

  1. Spark的性能优化案例分析(下)

    前言 Spark的性能优化案例分析(上),介绍了软件性能优化必须经过进行性能测试,并在了解软件架构和技术的基础上进行.今天,我们通过几个 Spark 性能优化的案例,看一看所讲的性能优化原则如何落地. ...

  2. Spark源码性能优化案例分析

    本篇文章枚举了几例常见的问题并给出了优化方案,推荐了两套测试性能优化工具 问题: Spark 任务文件初始化调优 资源分析,发现第一个 stage 时间特别长,耗时长达 14s , CPU 和网络通信 ...

  3. 崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析

    2013数据库大会:崔华-基于Oracle的SQL优化案例分析 崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待. 2013年中国数据库技术大会第二天的"Oracle ...

  4. MySQL第12天:MySQL索引优化分析之性能优化案例实践

    MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...

  5. MySQL高性能实战——part3——分析SQL,定位慢SQL(性能优化的前提)

    前言: 此文借鉴<MySQL高性能>一书,还有MySQL官方文档,笔者将通过自身的一些实战经验和阅读习惯对本书进行一个总结,整理,归纳出企业级开发中常用的优化案列和部分概念!! ​ 官方文 ...

  6. Day814.电商系统表设计优化案例分析 -Java 性能调优实战

    电商系统表设计优化案例分析 Hi,我是阿昌,今天学习记录的是关于电商系统表设计优化案例分析. 如果在业务架构设计初期,表结构没有设计好,那么后期随着业务以及数据量的增多,系统就很容易出现瓶颈. 如果表 ...

  7. 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)

    第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来 ...

  8. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  9. SQL语句优化技术分析

    SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用 ...

最新文章

  1. 深度包检测 DPI 介绍
  2. linux shell wc统计文件行数
  3. 一篇关于兼容问题的基础总结
  4. 怎样开始学习ERP?
  5. 前端学习(1346):用户的增删改查操作3增加
  6. 网站关停就没事了?5100万账户文件被盗
  7. 对象注册表 Zend_Registry
  8. 单片机中断交通灯c语言程序设计,基于c语言单片机交通灯
  9. 【染上你的颜色】MMD动作+镜头下载
  10. 外贸小公司如何做谷歌SEO优化
  11. 游戏外挂基本原理及实现
  12. mstar Android解锁,液晶电视维修之Mstar方案从强刷包提取引导的方法
  13. 百度大脑人脸识别助力企业实现无感考勤
  14. cocos2dx游戏-可爱的小精灵的各种用法大全
  15. vue实现微信web开发之扫码签到
  16. 微信应用号(小程序)开发IDE配置
  17. C++ 快速傅里叶变换
  18. idea如何配置jdk环境_idea配置jdk环境变量
  19. PHP版田字格带笔顺临摹描红练习字帖在线生成小工具,可直接打印三色的田字格米字格回宫格空格灰格字帖,生成速度快可直接打印或导出成PDF文件等下载地址在最后
  20. 我为 Redis 找到了一个新家——Redis 之父当年的困兽之斗

热门文章

  1. VMware共享文件夹遇到的问题
  2. 用myeclipse搭建S2SH struts2 spring hibernate
  3. 正则表达式-用户名规则之只含汉字、数字、字母、下划线
  4. jquery 学习之一 对象访问
  5. 【Top1】Tudou.com首页网页设计的制作方法
  6. 框架使用SpringBoot + Spring Security Oauth2 +PostMan
  7. 基于SpringBoot+Mybatis+Thymeleaf商品信息管理系统
  8. Cisco asa 5520 oid
  9. CCNA知识总结(一)
  10. 爱因斯坦提出的逻辑性问题_提出正确问题的重要性