Oracle直接路径读解析

目录

  • 一、直接路径读概念
  • 二、直接路径读在OLTP和OLAP环境中的不同点
  • 三、如何禁止直接路径读
    • 方法1:使用事件设置
    • 方法2:使用隐含参数

一、直接路径读概念

直接路径读(Direct Path Read)是Oracle数据库中的一种数据读取机制,通常在大规模数据加载或批量数据处理操作中使用,如INSERT /*+ APPEND */、CREATE TABLE AS SELECT (CTAS)、MERGE语句的某些情况以及数据泵(Oracle Data Pump)操作中。这种读取方式与传统的通过数据库缓冲区缓存(BUFFER CACHE)读取数据不同,它绕过了SGA(系统全局区)的缓冲区缓存,直接将数据从数据文件读入到进程的私有内存区域(PGA,程序全局区),然后可能直接写入到用户全局区(UGA)或者大型池(如果配置了),最终用于构建或修改表的数据。直接路径读的主要优点如下:

  1. 减少缓冲区缓存争用:由于数据不经过共享的缓冲区缓存,因此减少了与其他会话之间的资源竞争,这对于大量数据操作特别有利。
  2. 提高批量数据加载效率:直接路径读可以减少I/O操作的开销,尤其是当数据不需要立即被其他会话访问时,因为它避免了数据在缓冲区缓存中的额外复制和管理。
  3. 支持并行处理:直接路径读操作天然支持并行执行,多个进程可以同时从不同的数据文件中读取数据,显著提升数据加载速度。
  4. 最小化逻辑读:由于数据直接从数据文件读取到PGA,不会计入逻辑读计数,这在一些性能监控和分析场景下可能会改变对数据库活动的理解。

然而,直接路径读也有其局限性,比如它不适用于那些需要立即进行数据一致性和完整性检查的场景,因为这些数据不会被缓存在数据库的缓冲区缓存中供其他查询使用。此外,直接路径读写入的数据在提交之前不会对其他查询可见,这符合Oracle的可串行化隔离级别要求。

使用直接路径读通常需要特定的提示(如/*+ APPEND */)或者特定的操作指令来启用,且在执行这类操作时,数据库会自动选择最适合的读取模式。

二、直接路径读在OLTP和OLAP环境中的不同点

在数据库设计和运维中,OLTP(Online Transaction Processing,联机事务处理)和OLAP(Online Analytical Processing,联机分析处理)系统有着不同的目标和工作负载特性,这导致了它们对直接路径读(Direct Path Read)这一特性的需求有所不同。

OLTP环境为什么要考虑禁止直接路径读:

  1. 事务完整性:OLTP系统主要处理日常的业务操作,如订单处理、银行交易等,这些操作要求高度的事务一致性和快速响应。直接路径读通常绕过了缓冲区缓存,可能不会遵循ACID原则中的某些方面,尤其是在涉及到回滚操作时,可能导致数据一致性问题。

  2. 并发控制:OLTP系统需要处理高并发事务,使用共享的缓冲区缓存有助于维护数据的一致性和减少锁的竞争,直接路径读可能会增加锁的复杂度,影响并发性能。

  3. 即时数据访问:OLTP查询倾向于查找最新的数据状态,使用缓冲区缓存可以确保数据是最新的,而直接路径读可能不会立即反映最新更改。

OLAP环境不需要禁止直接路径读的原因:

  1. 批量处理和分析:OLAP系统专注于复杂的分析查询,通常涉及大量数据的聚合和扫描,而不是单行事务。直接路径读可以从磁盘直接读取大量数据,绕过SGA中的缓冲区缓存,减少内存消耗,提高大数据量分析的效率。

  2. 读优化:OLAP查询通常不修改数据,更多是读取历史数据进行分析,因此对数据一致性的实时性要求较低,直接路径读可以更快地从磁盘读取数据,满足分析查询对速度的需求。

  3. 数据加载和ETL:OLAP环境常用于夜间数据加载或ETL(提取、转换、加载)过程,这些操作往往涉及到大规模数据的导入和处理,直接路径读可以提高数据加载的速度。

综上所述,是否禁止直接路径读取决于系统的主要用途和性能需求。OLTP系统因注重即时性、事务完整性和并发处理,倾向于不鼓励直接路径读;而OLAP系统则因其分析性质和对大量数据快速扫描的需求,可以充分利用直接路径读的优势。

三、如何禁止直接路径读

在Oracle数据库中,如果您希望禁止直接路径读(Direct Path Read),可以采用以下方法之一来实现:

方法1:使用事件设置

您可以通过设置特定的事件来禁用直接路径读。这可以通过执行以下ALTER SYSTEM命令来完成:

ALTER SYSTEM SET EVENTS '10949 TRACE NAME CONTEXT FOREVER, LEVEL 1';

这个命令会设置一个事件,用于禁用直接路径读。注意,此设置是会话级别的,意味着它会影响到之后创建的所有会话。如果需要这个设置永久生效,需要将其添加到初始化参数文件(SPFILE)中:

ALTER SYSTEM SET EVENTS '10949 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE=SPFILE;

然后重启数据库以使更改生效。

方法2:使用隐含参数

另一种方法是通过设置隐含参数_serial_direct_read来控制直接路径读的行为:

ALTER SYSTEM SET "_serial_direct_read"=never SCOPE=BOTH SID='*';

这会将直接路径读的策略设置为“never”,从而避免直接路径读的发生。同样,为了使更改持久化,需要在SPFILE中设置并重启数据库。

请注意,直接路径读在某些场景下能够提升性能,特别是对于大容量数据加载和处理操作。因此,在决定禁用直接路径读之前,应当评估此操作对整体系统性能的影响。这些方法主要用于诊断和解决特定问题,而不是作为常规操作,因为它们可能会对数据库性能产生负面影响。在生产环境中实施此类更改前,建议先在测试环境中进行充分的测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10编码(数据转化为信号)

目录 数据转化为信号 数字数据编码为数字信号: 数字数据调制为模拟信号: 模拟数据编码为数字信号: 模拟数据调制为模拟信号: 数据转化为信号 数据转化为数字信号要通过编码,转化为模拟信号通过调制 数据又分为数字…

PXI总线测试模块-6939 矢量信号发生器

频率范围:250kHz~6GHz 6939 矢量信号发生器 6939矢量信号发生器提供频率范围250kHz~6GHz的多制式信号,单边带相位噪声优于-120dBc/Hz10kHz(载波1GHz)、EVM优于1.0%,能够实现高纯连续波输出、模拟调制信号输…

Linux: network: TCP: zero window size/window full 示例

最近遇到一个问题,当前机器的CPU使用率非常高,然后导致其中一个程序处理socket的数据过慢,然后出现下面的zero的示例。 下面是在接收buff用光的时候,发出的 TCP zeroWindows的消息 这种问题就是内存,CPU,网速之间的性能取舍。具体解决的话,需要看具体的需要是什么样的?…

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 目前,模型最全的网站是HuggingFace,但是国内需要魔法流量才能访问。另外,现在大模型权重文件都较大,也会浪费不少流量,因此这里推荐使用魔搭社区下…

Spring+SpringBoot面试总结(近两万字)

SpringSpringBoot面试总结 一、Spring Bean1.1、bean的生命周期(对象的创建使用销毁)1.1.1、准备工作1.1.2、创建Bean对象1.1.3、注册销毁 1.2、 bean的作用域1.2.1、配置方式 1.3、 spring 自动装配 bean 有哪些方式(存疑存疑)1.…

2024年上半年软件设计师试题及答案(回忆版)--案例题

案例题 1.缺陷识别的数据流图 摄像机原始图像 缺陷识别,特征值,颜色、纹理,是否缺陷,缺陷类型 识别结果 数据导出,供检测识别系统模型积累、训练 系统管理,质量员配置系统参数 1.实体 2.存储 3.面向对象的分析与面向对象的设计2个阶段的模型区别 4.数据组成 2.球队、…

软件测试金字塔,对号入座,你在哪层?

自从学习了软件测试,脑袋也清晰了,目标也明确了,就是不知道学到哪里了.中间有很多的困难也有很多成就感,你目前在那个阶段呢? 初级测试工程师 技能要求:需求分析,使用等价类边界值等方法进行用例设计,执行功能测试,发现提交跟踪bug,使用禅道,会在测试中会操作数据库进行检查和…

数学建模--LaTeX的基本使用

目录 1.回顾 2.设置这个页眉和页脚 3.对于字体的相关设置 4.对于这个分级标题的设置 5.列表的使用 6.插入图片 1.回顾 (1)昨天我们了解到了这个latex的使用基本常识,以及这个宏包的概念,区域的划分,不同的代码代…

电磁仿真--CST综合建模练习1

1. 简介 本文展示一个CST自带的示例,在三维空间中使用带线计算传输线的S参数。基板顶部的带线通过小圆柱连接到底部的短带线,以便绕过可能存在的障碍。 结构生成 该结构完全通过参数输入进行建模,参考波长为10毫米,因此可以轻松…

JavaWeb开发 1.Web开发 介绍

我的生命是一万次的春和景明 —— 24.5.27 一、什么是Web Web: 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 Web网站的工作流程 学习流程

kafka的安装

windows下kafka的安装 【Kafka】Windows下安装Kafka(图文记录详细步骤)_windows安装kafka-CSDN博客 kafka生产消息 kafka消费消息

​​​【收录 Hello 算法】10.6 小结

10.6 小结 二分查找依赖数据的有序性,通过循环逐步缩减一半搜索区间来进行查找。它要求输入数据有序,且仅适用于数组或基于数组实现的数据结构。暴力搜索通过遍历数据结构来定位数据。线性搜索适用于数组和链表,广度优先搜索和深度优先搜索…

指纹识别经典图书、开源算法库、开源数据库

目录 1. 指纹识别书籍 1.1《精通Visual C指纹模式识别系统算法及实现》 1.2《Handbook of Fingerprint Recognition》 2. 指纹识别开源算法库 2.1 Hands on Fingerprint Recognition with OpenCV and Python 2.2 NIST Biometric Image Software (NBIS) 3. 指纹识别开源数…

怎样确保后端系统的安全性和防止数据泄露?

确保后端系统的安全性和防止数据泄露是一个重要的任务,以下是一些常见的方法: 强化身份验证:使用强密码和多因素身份验证来确保只有授权的用户能够访问系统。 加密数据:对敏感数据进行加密,包括数据在传输和存储时都要…

TensorFlow常见任务训练

### 1. 手写体数字识别 (MNIST) python import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten # 加载MNIST数据集 (x_train, y_train), (x_test, y_te…

【StableDiffusion】SD1.4、1.5、2.0、2.1 和 SDXL0.9-1.0、SDXL turbo 等的区别

总览 1.基础sd base model家族:SD1.4、SD1.5、SD1.5-LCM、SD2.0、SD2.0-768、SD2.1、SD2.1-768、SD2.1-UNCLIP 2.升级sdxl base model家族:SDXL0.9、SDXL1.0、SDXL1.0-LCM、SDXL-DISTILLED、SDXL-TURBO 3.专门用于视频生成的 SVD 家族:SVD、…

元对象系统

一、定义与基本概念 元对象系统是一个基于Qt框架的核心机制,它提供了运行时类型信息(RTTI)以及信号与槽(Signals and Slots)机制的支持。这个系统使得Qt能够实现许多强大的功能,如信号与槽的自动连接、QObject树结构的管理等。 二、主要特性与功能 运…

开启重学英语之路

为什么学了这么多年的英语还是不能自信的说自己擅长英语。 就算是在学校考了很高的分数,依然不能流利的和外国人对话。 只能说明之前的英语学习方法和学习思路只有问题的,所以不能一头扎进英语知识的学习之中,需要先反问自己一些问题&#…

C++习题(1)

一、题目描述&#xff1a; 二、代码展示&#xff1a; #include <iostream> #include <iomanip> using namespace std; struct Student{char name[20];int id;int age;float score; }; int main() {int n;cin>>n;Student student[n];float sum0.0;for(int i0…

QQ名片满级会员展示生成HTML源码

源码介绍 QQ名片满级会员展示生成HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;保存素材去选择QQ个性名片-选择大图模板-把图上传照片墙即可 源码效果 源码下载 蓝奏云&#xff1a;http…