梁敬彬老师的《收获,不止SQL优化》,关于如何缩短SQL调优时间,给出了三个步骤,
梁敬彬老师的《收获,不止SQL优化》,关于如何缩短SQL调优时间,给出了三个步骤,
1. 先获取有助调优的数据库整体信息
2. 快速获取SQL运行台前信息
3. 快速获取SQL关联幕后信息
其实我们日常,这些步骤,或多或少都会用,但往往缺乏系统的梳理,想到哪儿,做到哪儿,有时还是需要方法论的指导,梁老师帮助我们整理,而且给出了一键生成的脚本,非常实用,这引出了另一个话题,正如eygle曾说的,“动手实验实证能力,才会让别人的经验成为我们的知识和技能,不断成长”,除此之外,我们不能仅仅黑盒地使用,要了解背后机制,怎么一键生成的?脚本哪儿写得好,哪儿能优化,从中我们可以学习借鉴什么,这才能充分“榨干”脚本的知识。
1. 先获取有助调优的数据库整体信息
首先要知道整个数据库的运行情况,自然想到AWR,但是不是所有的性能问题,都能通过AWR暴露,例如采集AWR时间段,有问题的SQL根本未执行,因此,没发现问题,不代表没有问题。
使用spooldb.sql脚本(链接:https://github.com/liangjingbin99/shouhuo/blob/master/%E7%AC%AC01%E7%AB%A0/spooldb.sql),可以得到下面这几个文件,
(1) 最近一小时的ADDM:addmrpt_1_576_578.txt
(2) 最近一小时的AWR:awrrpt_1_577_578.html
(3) 最近7天的AWR:awrrpt_1_576_578_all.html
(4) 最近半小时的ASH:ashrpt_1_20190317212222_20190317215222.html
(5) 数据库所有的相关信息:spool_BISAL_1_19-03-17_21.52.html
前几个好理解,最后一个,数据库所有的相关信息,是用spool生成的,包含如下信息,我们能针对自己的个性化需求,增加/修改/删除关注的相应采集项,另外,发散一些想法,这些采集项,对应的SQL,我们能融入自己的监控平台,实现自动化采集、展示,做到充分利用,
"版本
最近一次启动时间,版本,以及是否RAC
30分钟内CPU或等待最长的
近期负载情况(根据AWR快照)
逻辑读最多
物理读最多
执行次数最多
解析次数最多
磁盘排序最多
提交次数超过10000的session
长度超过100的SQL
查询共享内存占有率
表有带并行度
索引有带并行度
失效索引
失效对象
位图索引和函数索引、反向键索引
组合索引组合列超过4个的
索引个数字超过5个的
哪些大表从未建过索引。
哪些表的组合索引与单列索引存在交叉的情况。
哪些对象建在系统表空间上。
检查统计信息是否被收集
检查哪些未被收集或者很久没收集
被收集统计信息的临时表
日志切换频率分析
最近10天中每天日志切换的量
日志组大小
查看recovery_file_dest使用率
检查序列小于20的情况
表空间使用情况
整个数据库有多大
对象大小TOP10
回收站情况(大小及数量)
查谁占用了undo表空间
查谁占用了temp表空间
观察回滚段,临时段及普通段否是自动扩展
表大小超过10GB未建分区的
分区最多的前10个对象
分区不均匀的表
列数量超过100个或小于2的表
表属性是nologging的
表属性含COMPRESSION的
索引属性含COMPRESSION的
触发器
将外键未建索引的情况列出
热点块(汇总)
热点块(展开,未汇总)
附录:查看session_cached_cursors的参数设置情况,如果使用率为100%则增大这个参数值
附录:供参考的Oracle所有参数"
2. 快速获取SQL运行台前信息
针对具体SQL的调优,执行计划,是重要的武器,往往需要和运行时的统计信息结合一起看,才会更加准确。
P.S. 下面是执行计划获取的几种方法,
《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》
3. 快速获取SQL关联幕后信息
得到SQL信息,可能需要确认和这条SQL关联的表、索引等的信息,辅助问题的判断。
为了一键得到2和3的情况,执行spoolsql.sql脚本(链接:https://github.com/liangjingbin99/shouhuo/blob/master/%E7%AC%AC02%E7%AB%A0/spoolsql.sql),输入要检索的sql_id,通过spool得到输出结果,如下,sql_id是7ng34ruy5awxq的SQL,文件名为7ng34ruy5awxq.html,
通过这两个脚本,一键生成数据库、SQL相关的统计信息,非常方便,当然,了解脚本的原理,可以让我们更有针对性地使用这些脚本,甚至改造脚本,从中借鉴学习,转化为自己的知识体系,对于个人的成长,这才是最重要的。
————————————————
版权声明:本文为CSDN博主「bisal」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bisal/article/details/88685091
梁敬彬老师的《收获,不止SQL优化》,关于如何缩短SQL调优时间,给出了三个步骤,的更多相关文章
- SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)
前言 本篇继续玩转模块的内容,关于索引在SQL Server的位置无须多言,本篇将分析如何利用Hint引导语句充分利用索引进行运行,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲 ...
- 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )
SQL Optimizer for SQL Server 帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 SQL Optimizer for SQL Server 让 SQL Serve ...
- Oracle之SQL优化专题01-查看SQL执行计划的方法
在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...
- Oracle之SQL优化专题02-稳固SQL执行计划的方法
首先构建一个简单的测试用例来实际演示: create table emp as select * from scott.emp; create table dept as select * from ...
- 有史以来性价比最高最让人感动的一次数据库&SQL优化(DB & SQL TUNING)——半小时性能提升千倍
昨天,一个客户现场人员急急忙忙打电话找我,说需要帮忙调优系统,因为经常给他们干活,所以,也就没多说什么,先了解情况,据他们说,就是他们的系统最近才出现了明显的反应迟钝问题,他们的那个系统我很了解,软硬 ...
- SQL Server 调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)
前言 本篇继续玩转模块的内容,关于索引在SQL Server的位置无须多言,本篇将分析如何利用Hint引导语句充分利用索引进行运行,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲 ...
- SQL优化的一些总结 SQL编写一般要求
SQL编写一般要求---SQL语句尽可能简单---分解联接保证高并发---同数据类型的列值比较---不在索引列做运算---禁止使用SELECT *---避免负向查询和%前缀模糊查询---保持事务(连接 ...
- SQL Server性能调优系列
这是关于SQL Server调优系列文章,以下内容基本涵盖我们日常中所写的查询运算的分解以及调优内容项,皆为原创........ 第一个基础模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础 ...
- sql server性能调优
转自:https://www.cnblogs.com/woodytu/tag/%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%9F%B9%E8%AE%AD/defaul ...
随机推荐
- Spring之跨重定向请求传递数据
摘要 在开发场景中,大部分数据都是使用请求转发(forward)进行传递,而使用重定向(redirect)传递数据可能比较少. 那么问题来了:请求中的数据生命周期存活时间只在一个请求转发(reques ...
- 第一个boot项目
一.打开网址https://start.spring.io/ 进去springboot官网,根据自己实际情况选择所需组件,点击生成. 二.导入maven项目,但是pom.xml报Line1未知错误,检 ...
- 【hibernate】重写物理表名和列明
[hibernate]重写物理表名和列明 转载:https://www.cnblogs.com/yangchongxing/p/10357123.html 假设你的数据库命名有这样的需求,表都以 yc ...
- ELK和EFK的区别
ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...
- Ngnix:最通俗解读,Nginx是什么
Nginx 同 Apache 一样都是一种 Web 服务器.基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Unifo ...
- ERP系统到底能做什么?
ERP的定义:在先进的企业管理思想的基础上,应用信息技术实现对整个企业资源的一体化管理. 关键词:信息技术 先进的管理思想 企业资源一体化: 那么,ERP系统在企业日常经营管理中到底能做什么? 1.在 ...
- adb shell常用命令
一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但 ...
- 初学Manjaro
近期,看有朋友在使用Manjaro系统,感觉这个系统挺不错,于是我也安装了Manjaro,学习一下!!!! Manjaro下载地址:https://manjaro.org/download/ Manj ...
- JAVA杂记
写在前面:期末考试要来了,对于一个暑假自学了几天JAVA之后一个学期划水的人来说现在就是踏上了JAVA预习之路.下面是自己xjb记的东西,主要是根据老师给的流程图总结的自己认为需要的一些零碎的小知识, ...
- <计算机系统结构中的8个伟大思想>
摘自<计算机组成与设计>戴维帕森 ——面向摩尔定律的设计 ——使用抽象简化设计 ——加速大概率事件 ——通过并行提高性能 ——通过流水线提高性能 ——存储器层次 ——通过冗余提高可靠性