v$sqlv$sqlareav$sqltextv$sql_plan

Posted 迷茫中寻找方向

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了v$sqlv$sqlareav$sqltextv$sql_plan相关的知识,希望对你有一定的参考价值。

转自:http://gldbhome.blog.51cto.com/1552935/886316

 

视图v$sqltext中没有SQL语句的相关统计信息,但是v$sqltext用多行来保存sql语句,而v$sqlarea中只能
保存sql语句的前1000个字节,所以如果sql语句大于1000个字节,就要到v$sqltext中查看完整的语句,其字
段PIECE表示每个sql的行顺序。


v$sqlarea --------- 存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
v$sql ---------- 存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息
v$sqltext---------分片之后按顺序编号保存sql,存储的是完整的SQL,SQL被分割
v$sql_plan-------即使相同的sql,也可能具有不同的执行计划

v$sql join to v$sql_plan 就代表了具体的sql的执行计划,通过下面3个字段做连接

ADDRESS RAW(4)
HASH_VALUE NUMBER
CHILD_NUMBER NUMBER

而v$SQLAREA 忽略了 执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息









以上是关于v$sqlv$sqlareav$sqltextv$sql_plan的主要内容,如果未能解决你的问题,请参考以下文章

查看Oracle耗时Sql

ORACLE查询消耗较高的SQL

oracle性能优化

zabbix 使用spool监控oracle锁表

Flyway乱序迁移

mysql动态sql 整理多个字段