暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 插入过程中的物理读取

ASKTOM 2021-03-18
319

问题描述

我有一个查询,正在产生大量的物理读取。唯一的问题是它是一个插入。我的问题是:
什么会导致插入过程中的物理读取?我唯一的猜测是在插入之前在相同的语句中执行select,但是:
a) 这是否会在插入物上表现为物理读取,从而 “隐藏” select语句?
b) 开发人员声称插入是该事务中唯一的语句。

SQL:
----
INSERT INTO [name_of_table] (id,  hashID,  nextCheckTime,  createTime,  removeTime,  priority,  status,  vehicleID,  properties,  partitionDate,  payload) VALUES (:1 ,  :2 ,  :3 ,  :4 ,  :5 ,  :6 ,  :7 ,  :8 ,  :9 ,  :10 ,  :11 )
----

The table has a RAW and a LOB column and is range/interval partitioned on partitiondate:
----
ID         VARCHAR2(200 BYTE)
HASHID         NUMBER(18,0)
NEXTCHECKTIME NUMBER(38,0)
CREATETIME NUMBER(38,0)
REMOVETIME NUMBER(38,0)
PRIORITY VARCHAR2(20 BYTE)
STATUS         VARCHAR2(1 BYTE)
PAYLOAD2000 RAW
PAYLOAD         BLOB
VEHICLEID VARCHAR2(200 BYTE)
PROPERTIES VARCHAR2(4000 BYTE)
PARTITIONDATE NUMBER(38,0)


AWR SQL ordered by Reads
----
Physical Reads Executions Reads per Exec  %Total Elapsed Time (s) %CPU %IO
8,021,463 4,327,620 1.85          62.58 48,847.37         1.52 55.76

AWR: SQL ordered by Physical Reads (UnOptimized)
----
UnOptimized Read Reqs Physical Read Reqs Executions UnOptimized Reqs per Exec %Opt %Total
8,019,976           8,019,976          4,327,620 1.85                         0.00  70.53

专家解答

您是否为数据库启用了闪回日志记录?如果是这样,那么我们需要 * 读取 * 您插入的块,以便将它们写入闪回日志。

其他可能性-约束验证,即,我们需要读取父表以确保子表中的数据有效。

可能还有其他原因,但这也许是我看到的最常见的原因。

如果您进行跟踪,则可能能够捕获引起物理读取的对象,这可能有助于进一步诊断。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论