SQL性能优化案例分析
这段时间做一个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性能优化案例分析相关推荐
- Spark的性能优化案例分析(下)
前言 Spark的性能优化案例分析(上),介绍了软件性能优化必须经过进行性能测试,并在了解软件架构和技术的基础上进行.今天,我们通过几个 Spark 性能优化的案例,看一看所讲的性能优化原则如何落地. ...
- Spark源码性能优化案例分析
本篇文章枚举了几例常见的问题并给出了优化方案,推荐了两套测试性能优化工具 问题: Spark 任务文件初始化调优 资源分析,发现第一个 stage 时间特别长,耗时长达 14s , CPU 和网络通信 ...
- 崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析
2013数据库大会:崔华-基于Oracle的SQL优化案例分析 崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待. 2013年中国数据库技术大会第二天的"Oracle ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
- MySQL高性能实战——part3——分析SQL,定位慢SQL(性能优化的前提)
前言: 此文借鉴<MySQL高性能>一书,还有MySQL官方文档,笔者将通过自身的一些实战经验和阅读习惯对本书进行一个总结,整理,归纳出企业级开发中常用的优化案列和部分概念!! 官方文 ...
- Day814.电商系统表设计优化案例分析 -Java 性能调优实战
电商系统表设计优化案例分析 Hi,我是阿昌,今天学习记录的是关于电商系统表设计优化案例分析. 如果在业务架构设计初期,表结构没有设计好,那么后期随着业务以及数据量的增多,系统就很容易出现瓶颈. 如果表 ...
- 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)
第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来 ...
- AntDB 落地某省电信大数据中心项目的性能优化案例分享
亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...
- SQL语句优化技术分析
SQL语句优化技术分析 操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用 ...
最新文章
- 深度包检测 DPI 介绍
- linux shell wc统计文件行数
- 一篇关于兼容问题的基础总结
- 怎样开始学习ERP?
- 前端学习(1346):用户的增删改查操作3增加
- 网站关停就没事了?5100万账户文件被盗
- 对象注册表 Zend_Registry
- 单片机中断交通灯c语言程序设计,基于c语言单片机交通灯
- 【染上你的颜色】MMD动作+镜头下载
- 外贸小公司如何做谷歌SEO优化
- 游戏外挂基本原理及实现
- mstar Android解锁,液晶电视维修之Mstar方案从强刷包提取引导的方法
- 百度大脑人脸识别助力企业实现无感考勤
- cocos2dx游戏-可爱的小精灵的各种用法大全
- vue实现微信web开发之扫码签到
- 微信应用号(小程序)开发IDE配置
- C++ 快速傅里叶变换
- idea如何配置jdk环境_idea配置jdk环境变量
- PHP版田字格带笔顺临摹描红练习字帖在线生成小工具,可直接打印三色的田字格米字格回宫格空格灰格字帖,生成速度快可直接打印或导出成PDF文件等下载地址在最后
- 我为 Redis 找到了一个新家——Redis 之父当年的困兽之斗
热门文章
- VMware共享文件夹遇到的问题
- 用myeclipse搭建S2SH struts2 spring hibernate
- 正则表达式-用户名规则之只含汉字、数字、字母、下划线
- jquery 学习之一 对象访问
- 【Top1】Tudou.com首页网页设计的制作方法
- 框架使用SpringBoot + Spring Security Oauth2 +PostMan
- 基于SpringBoot+Mybatis+Thymeleaf商品信息管理系统
- Cisco asa 5520 oid
- CCNA知识总结(一)
- 爱因斯坦提出的逻辑性问题_提出正确问题的重要性