网站首页 > 数据库 / 正文
一、I/O总结
I/O、内存、CPU是ORACLE数据库优化的核心,之需要BUFFER 就能完成的I/O是逻辑I/O,针对磁盘的I/O是物理I/O。
二、逻辑读
首先逻辑读会消耗大量的CPU操作,其次逻辑读分两种类型:第一种是一致读(consistent gets);第二种时当前读(db block gets)。一致读是针对SELECT,而当前读是针对DML和DDL。
怎么区分是一致读和当前读?我们可以根据BUFFER HEADER 上的BUFFER PIN 锁模式确定。该锁由三种模式:共享模式、独占模式、修改模式。存SELCT只会是共享模式,DML和DDL会申请独占模式和修改模式的锁。
举例:
第一个会话:
CREATE TABLE liuxiaobin20210812 AS SELECT ROWNUM ID,object_name NAME FROM Dba_Objects;CREATE UNIQUE INDEX liuxiaobin20210812_id ON liuxiaobin20210812(ID);SELECT SID FROM v$mystat WHERE ROWNUM = 1;
第二个会话:有第二个会话测试第一个会话的逻辑读
SELECT NAME, VALUE FROM V$SESSTAT A, V$STATNAME B WHERE A.STATISTIC# = B.STATISTIC# AND SID = 246 AND NAME IN('consistent gets','consistent gets - examination')
第一个会话执行以下代码:
DECLARE M_NAME VARCHAR2(100); BEGIN FOR I IN 1..100 LOOP SELECT NAME INTO M_NAME FROM LIUXIAOBIN20210812 WHERE ID = I; END LOOP; END;
第二个会话执行以下代码:
SELECT NAME, VALUE FROM V$SESSTAT A, V$STATNAME B WHERE A.STATISTIC# = B.STATISTIC# AND SID = 246 AND NAME IN('consistent gets','consistent gets - examination')
读BUFFER的时候数据将BUFFER中的行读取到PGA中,每次读多少行由参数ARRAYSIZE控制,该参数设置合理可以调节逻辑读I/O次数。
Tags:oracle in数组
猜你喜欢
- 2024-11-26 存储基础知识之存储方式
- 2024-11-26 Redis GEO地理位置数据存储方案
- 2024-11-26 LangChain手册(Python版)19模块:索引中的矢量数据库
- 2024-11-26 Java 14 新功能介绍
- 2024-11-26 sorms 1.0.10 发布,简易ORM框架
- 2024-11-26 CENTOS断更之后,该何去何从?
- 2024-11-26 linux shell 笔记——1
- 2024-11-26 Oracle数据库扩展语言PL/SQL之自治事务
- 2024-11-26 Oracle PL/SQL编程入门篇
- 2024-11-26 一文看懂Oracle11g IO校准功能--数据库评估存储设备IO性能