前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SQL调优和诊断之何时使用何工具?

SQL调优和诊断之何时使用何工具?

作者头像
SQLplusDB
发布于 2022-08-19 13:29:17
发布于 2022-08-19 13:29:17
58200
代码可运行
举报
运行总次数:0
代码可运行

概述

当把问题定位到某个或某些SQL后,我们接下来就要针对不同的场景和条件,通过各种工具和方法进行SQL的分析,而针对不同的环境和场景,我们选择的工具可能也有所不同。

根据用户使用的数据库的版本(Editions)和license情况,在SQL调优和诊断工具会有所不同,主要可以分为以下几类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
・企业版(Enterprise Edition )
・企业版(Enterprise Edition ) + Diagnostics Pack
・企业版(Enterprise Edition ) + Tuning Pack(include Diagnostics Pack)
・企业版(Enterprise Edition )以外的版本,如标准版(Standard Edition),个人版(Personal Edition )等

而根据问题的重现性,我们面临的问题主要可以分为以下3种:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.通过某些条件和方法可以重现的问题
2.不可以重现,需要实时分析的问题
3.不可以重现,需要事后分析的问题

本文介绍在SQL问题诊断过程中,不同场景下应该使用的各个SQL调优和诊断工具。

工具的分类(Editions&license)

为了了解数据库的版本(Editions)和license情况可以使用哪些工具,我们需要首先了解一下Diagnostics Pack license和Tuning Pack license都包含哪些数据库功能。

对于Diagnostics Pack license和Tuning Pack license的购买前提是,你必须使用的是企业版(Enterprise Edition )。

即,如果你利用的数据库是企业版(Enterprise Edition )以外的版本,如标准版(Standard Edition),个人版(Personal Edition )等的话,你完全不需要在意这些 Pack license,因为这些版本不能够使用Diagnostics Pack license和Tuning Pack license都包含哪些数据库功能。

1.Oracle Diagnostics Pack 包括的特性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AWRADDMASH及其相关的视图、表和程序包等
Performance monitoring and diagnostics (database and host)
Automatic Workload Repository (AWR)AWR Warehouse★
Automatic Database Diagnostic Monitor (ADDM)★
Compare Period ADDM★
Real Time ADDM★
Active Session History (ASH)ASH analytics★
Performance Hub
Exadata Cell Grid Administration
Exadata Cell Grid Performance
Exadata Cell Group Health Overview page
Exadata Resource Utilization
Blackouts
Notifications
Metric and Alert/Event history
User-Defined Metrics and Metric Extensions
Management Connectors
Dynamic metric baselines and Adaptive metric thresholds
Monitoring templates and Template Collections
Replay Compare Period Report
Supporting functionality to perform per stream bottleneck detection and per component top wait event analysis

Licensed Command-Line APIs:
程序包(Package):
DBMS_WORKLOAD_REPOSITORY package
DBMS_ADDM package
DBMS_ADVISOR package (if advisor_name=ADDM or task_name=ADDM prefix)

功能方法(Function):
DBMS_WORKLOAD_REPLAY.COMPARE_PERIOD_REPORT function

视图(Views):
V$ACTIVE_SESSION_HISTORY(X$ASH)
DBA_STREAMS_TP_PATH_BOTTLENECK
DBA_ADDM_*
MGMT$*

数据(Data):
DBA_STREAMS_TP_COMPONENT_STAT (where STATISTIC_UNIT = 'PERCENT')
DBA_HIST_* ( except DBA_HIST_SNAPSHOT, DBA_HIST_DATABASE_INSTANCE, DBA_HIST_SNAP_ERROR, DBA_HIST_SEG_STAT, DBA_HIST_SEG_STAT_OBJ, DBA_HIST_UNDOSTAT)
DBA_ADVISOR_* (when ADVISOR_NAME =ADDM or TASK_NAME =ADDM*)

报告(Reports):/rdbms/admin/ 路径下的这些脚本
awrrpt.sql, awrrpti.sql, awrgrpt.sql, awrgrpti.sql, awrgdrpt.sql, awrgdrpi.sql, addmrpt.sql, addmrpti.sql, ashrpt.sql, ashrpti.sql, awrddrpt.sql, awrddrpi.sql, awrsqrpi.sql, awrsqrpt.sql, awrextr.sql, awrload.sql, awrinfo.sql, spawrio.sql, spawrrac.sql.

2.Oracle Tuning Pack 包括的特性

你要使用Oracle Tuning Pack 的特性的前提是,你必须要有Oracle Diagnostics Pack。

Oracle Tuning Pack 包括的以下特性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL Access Advisor
SQL Tuning Advisor
Oracle Database In-Memory Advisor
Automatic SQL Tuning
SQL Tuning Sets
SQL Profiles
Real-time SQL and PL/SQL Monitoring
Real-time Database Operations Monitoring
Reorganize objects

Licensed Command-Line APIs:
程序包(Package):
DBMS_ADVISOR package (if advisor_name=SQL Tuning Advisor or SQL Access Advisor)
DBMS_SQLTUNE

视图(Views):
V$SQL_MONITOR
V$SQL_PLAN_MONITOR

报告(Reports):/rdbms/admin/ 路径下的这些脚本
sqltrpt.sql

参考:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Database Licensing Information User Manual 12c
>Oracle Diagnostics Pack
>Oracle Tuning Pack

根据各个工具可以适用的场景,我们又可以作为以下几类:

可以重现的问题

如果能够通过某些条件和方法可以重现发生的问题时,是最容易也是最有可能找到根本原因的。

对于这种问题,我们可以使用任何可以用的工具进行问题的分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXPLAIN PLAN
・Autotrace (SQL*PLUS)
・动态视图
・AWR SQL Report
・StatsPack SQL Report
・DBMS_XPLANSQLTXPLAIN(SQLT)SQL Tuning Health-Check Script (SQLHC)SQL TRACE10046)
・OPTIMIZER TRACE10053 )
・Real-Time SQL Monitoring
・DBMS_SQLDIAG

实时分析的问题

对于需要实时分析的问题,我们主要可以通过如下工具进行分析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
・动态视图 (dynamic performance views)
V$SQL
V$SQL_SHARED_CURSOR
V$SQL_*

和数据库整体相关时:
V$SESSION
V$PROCESS
V$BGPROCESS
V$LOCK
V$LOCKED_OBJECT
V$SESSION_WAIT
V$LATCH
V$LATCHHOLDER
V$ROWCACHE

・Real-Time SQL Monitoring (11g)SQLTXPLAIN(SQLT)
>XTRACT mode
・SQL Tuning Health-Check Script (SQLHC)10053DBMS_SQLDIAG.DUMP_TRACE

事后分析的问题

对于需要事后分析的问题,我们主要可以通过AWR和Statspack工具进行分析。

其中需要注意的是Statspack不需要任何Licence,但是AWR、ADDM、ASH却需要Oracle Diagnostics Pack Licence.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
・StatsPack Report
・StatsPack SQL Report
・AWR Report
・ADDMASHAWR SQL Report
・Historical SQL Monitoring (12c)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SQL和数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MSSQL之八 实现视图与索引
l 视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。
用户9184480
2024/12/13
990
MSSQL之八 实现视图与索引
MySQL进阶
当使用 WITH CHECK OPTION 子句创建视图时,MySQL 会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。MySQL 允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql 提供了两个选项:CASCADED 和 LOCAL,默认值为 CASCADED。
TagBug
2023/03/17
7370
SQL基础(九)视图与索引实战演练
虽然索引很大程度上提高了查询速度,但同时也会降低更新表的速度,如:对表进行 insert、update 和 delete。这是因为更新表时,不仅要保存数据,还要保存一下索引文件
攻城狮杰森
2022/06/03
4190
MySQL数据库精选(从入门使用到底层结构)
查询所有数据库: SHOW DATABASES; 查询当前数据库: SELECT DATABASE(); 创建数据库: CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ]; 删除数据库: DROP DATABASE [ IF EXISTS ] 数据库名; 使用数据库: USE 数据库名;
不吃紫菜
2024/01/27
3940
MySQL数据库精选(从入门使用到底层结构)
mysql之视图、索引
视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
全栈程序员站长
2022/09/16
9880
SQL操作六
文章目录 1. Day06 1.1. 视图 1.1.1. 视图概述 1.1.2. 视图分类 1.1.3. 视图数据污染 1.1.4. 往视图中插入数据,删除数据,修改数据 1.1.5. 避免视图数据污染(with check option) 1.1.6. 修改视图 1.1.7. 删除视图 1.2. 案例 1.3. 索引原理 1.3.1. 索引概述 1.3.2. 创建索引 1.3.3. 查看索引 1.3.4. 删除索引 1.3.5. 索引是越多越好吗?有索引就一定好吗? 1.3.6. 复合索引 1.3.7
爱撒谎的男孩
2019/12/31
8290
数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图
使用SQL语言时,要注意SQL语言对大小写并不敏感,一般使用大写。所有符号一定是西文标点符号(虽然是常识,但我还是提一嘴)
风骨散人Chiam
2020/10/28
2.2K0
SQLServer 学习笔记之超详细基础SQL语句 Part 5
-----------------------接Part 4-------------------
授客
2019/09/11
3710
SQL索引一步到位
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。   1.1 什么是索引?   SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作
Java高级架构
2018/07/20
1.6K0
SQL Server基础:数据表完整性约束、索引、视图的操作
  本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。
疯狂学习GIS
2025/03/20
1210
SQL Server基础:数据表完整性约束、索引、视图的操作
SQL Server索引解析(Index)
  索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。
挽风
2021/04/13
1.4K0
SQL Server索引解析(Index)
SQL知识点(一)
    主数据文件有且只有一个,二级数据文件0-N个     扩展名:主数据文件:MDF             二级数据文件:NDF */
aehyok
2018/09/11
1.3K0
常用MySQL命令总结(数据库学习)
做Java的项目的时候,发现大多数的项目的数据库都是使用Mysql,就看看跟SQL server有什么区别,发现大区别没有,SQL语言类似的,并不像SQL server使用T-SQL语言
营琪
2019/11/04
1.8K0
数据库面试常问的一些基本概念
超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
全栈程序员站长
2021/04/07
5090
MySQL数据库—视图索引
1.视图是基于某个查询结果的虚表。(根据实际存在的表,经过查询之后,创建出来的一个虚表,被称为视图)
全栈程序员站长
2022/09/16
2.6K0
sqlserver创建视图索引「建议收藏」
索引视图创建注意事项 对视图创建的第一个索引必须是唯一聚集索引。 创建唯一聚集索引后,可以创建更多非聚集索引。 为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的存储方式相同。 查询优化器可使用索引视图加快执行查询的速度。 要使优化器考虑将该视图作为替换,并不需要在查询中引用该视图。
全栈程序员站长
2022/09/16
3.5K0
sqlserver创建视图索引「建议收藏」
SQL之视图与索引[通俗易懂]
##视图 人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。 1.视图的创建 语法: create view view_name as select_states [with check option] 视图创建注意事项: 1.视图的名称必须唯一,不能与表名重复 2.视图通常只能定义在当前数据库中,分区视图除外 3.可以在视图上定义视图 4.视图中的select定义部分不能包含order by,compute、compute by、default语句 5.不能创建临时视图,也不能创建临时表上的视图 6.当视图中的某一列是计算列等,或者有重名列,则视图必须为每个列名命一个唯一的名称 例子: 创建一个查询student表中人员所选课程成绩大于80分的视图 代码:
全栈程序员站长
2022/09/16
8340
SQL之视图与索引[通俗易懂]
数据库进阶2 Mysql高并发优化
如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的。
范蠡
2018/07/25
1.9K0
MySQL数据库学习
MySQL 数据库学习 MySQL数据库软件 安装 … 配置 MySQL服务启动 手动。 cmd–> services.msc 打开服务的窗口 使用管理员打开cmd net start mysql //启动mysql的服务 net stop mysql //关闭mysql服务 MySQL登录 mysql -uroot -p密码 mysql -hip -uroot -p连接目标的密码 mysql --host=ip --user=root --password=连接目标的密码 MySQL退出 exit qu
h-t-m
2022/11/24
4.2K0
MySQL数据库学习
数据库面试题汇总
1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。
用户4283147
2022/10/27
5530
数据库面试题汇总
相关推荐
MSSQL之八 实现视图与索引
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验