Oracle---PAG程序全局区的组成:堆栈区、会话区、游标区、排序区

news/2024/9/19 4:50:31/ 标签: oracle, 数据库

文章目录

  • PGA程序全局区
  • PGA主要内容
    • 1、排序区(SORT AREA)
      • **为什么给排序设置合理的排序区大小**
    • 2、会话区(USER SESSON DATA)
    • 3、堆栈区保存变量信息(STACK SPACE)
    • 4、游标区 (CURSOR STATE)


PGA程序全局区

程序全局区或进程全局区(PGA)是内存区,它包含有关单个服务器进程或单个后台进程的数据和控制信息。PGA在创建进程时分配,并在终止进程时回收和释放这个pga所占用的内存空间。与由若干个进程共享的SGA相比,PGA是仅供一个进程使用的区。

PGA区对于数据库的性能有较大的影响,特别是对数据排序操作的性能,必要时合理的管理PGA区能够很大程度上提高数据库的性能

PGA主要内容

1、排序区(SORT AREA)

需要注重排序区的大小,必要的情况下可以手动进行调整排序区的大小

为什么给排序设置合理的排序区大小

当用户对数据进行排序的时候,数据库是怎样处理的呢?

答:首先数据库系统将需要排序的数据保存到PGA程序缓存区中的一个排序区中,然后排序区对这些数据进行排序,如果排序的数据为2m,那么排序区至少要有2m的空间来容纳排序数据量,排序过程中又需要2m的空间来保存排序后的数据,,那么至少本次排序过程中,排序区空间大小应该至少为4m,相当于排序空间的大小等于=排序数据空间大小+排序后的数据空间大小之和

因为在读取数据的情况下,效率值为cup>内存>硬盘,效率成千百比

1、当数据的排序和读取都在内存中进行完成,无疑是很大程度上提高了数据库排序和访问性能,保持排序和读取同时在内存中完成,这是最为理想的状态,这种情况需要具备两个条件:第一,排序区的空间大小必须保持充足,可以通过手动调整参数来保证排序区的空间大小。第二,读取的数据必须在sga共享池中db cache中有缓存,当读取的数据未在数据库缓存区中,只能通过后台进程dbwr访问磁盘中的数据文件dbf,进行一次物理读,将数据缓存到db cache中。
2、当排序区空间不够的情况下,系统会会从硬盘中获取一个空间,来保存需要排序的数据,此时排序的效率会降低很多,如果日常工作中排序的操作较多的情况下,应该为PGA的排序区设置较大的空间,从而提示访问数据库的效率。
综上所述,提高数据库性能和访问效率需要具备两个条件,解决了两个制约因素才能达到最理想的状态,否则性能和访问效率将会大大降低。

2、会话区(USER SESSON DATA)

会话区由oracle数据库自动维护,大部分情况下,无需人工维护此区域,会话区提高的数据库的安全性数据库不仅仅能存储数据,而且还是统一管理数据的平台,根据要求为不用的用户设置不同的访问权限来访问数据从而有利于提高数据库的安全性

1、当用户进程与数据库建立会话时,oracle系统会将此用户的相关权限查询出来并保存到会话区内,当用户访问数据库中的数据时,oracle系统将核对会话区内的用户的权限,来验证用户是否具有相关的权限.

2、因为oracle系统在会话区内保存了,内存中核对用户权限速度快,若此会话读取的数据在db cache缓存中,速度要比物理磁盘度高出几千倍。

3、堆栈区保存变量信息(STACK SPACE)

有时候为了提高SQL语句的重用性,会在语句中使用绑定变量。简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入不同的变量值,就可以满足不同的查询需求。另外在这个堆栈区内还保存着会话变量、SQL语句运行时的内存结构等重要的信息。
数据库自动管理和维护,无需人工来管理,这些分区的大小,也是系统根据实际情况来进行自动分配的。当这个用户会话结束时,系统会自动释放这些区所占用的空间

4、游标区 (CURSOR STATE)

游标区是一个动态的区域。当用户执行游标语句时,系统就会在这个游标区内创建一个区域。当关闭游标时,这个区域就会被释放。这创建与释放,需要占用一定的系统资源,花费一定的时间。为此在使用游标时,如果频繁的打开和关闭游标,就会降低语句的执行性能。所以笔者建议,在写语句时,如果真的有必要使用游标技术时,则要注意游标不要频繁的打开和关闭。

1、频繁的打开和关闭游标这对游标的操作是不利的,会影响数据库的性能,可以通过限制游标的数量来提高数据库的性能

程序全局区(PGA)主要包含排序区、会话区、堆栈区和游标区四个部分的内容,他们各司其职,完成用户进程与数据库之间的会话。通常情况下,系统管理员主要关注的是排序区,在必要时需要手工调整这个排序区的大小。另外需要主要的是,游标区是一个动态的区域,在游标打开时创建,关闭时释放。故在数据库开发时,不要频繁的打开和关闭游标可以提高游标操作的效率,改善数据库的性能
会话区和堆栈区日常的维护交给数据库系统来完成即可


http://www.ppmy.cn/news/1520504.html

相关文章

AN7536PT时钟电路

目录 1 时钟电路概述2 时钟晶振电路2.1 需求分析2.2 晶振选型(Datasheet表5-7解读)2.3 设计晶振电路(表4-1、图5-4) 1 时钟电路概述 时钟电路是一种用于产生稳定、周期性脉冲信号的电子电路。它通常由晶体振荡器和相关逻辑电路组…

Luminar Neo for Mac智能图像处理软件【操作简单,轻松上手】

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试安装完成!!! 效果 一、下载软件 下载软件…

Hackme靶场渗透攻略

步骤一,注册登录进去 步骤二,点击search 我们发现有很多书 步骤三,搜索一本书抓包发放到重放器 步骤四,数据改为1*,复制数据包到1.txt,然后打开sqlmap 步骤五,sqlmap查看当前数据库 python s…

阿尔茨海默病症识别+图像识别Python+人工智能+深度学习+TensorFlow+机器学习+卷积神经网络算法

一、介绍 阿尔茨海默病症识别。使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对病症图片4种数据集进行训练[‘轻度痴呆’, ‘中度痴呆’, ‘非痴呆’, ‘非常轻微的痴呆’],最终得…

TeeChart助力科研软件:高效实现数据可视化

在当今的科学研究中,数据可视化已经成为理解和传播复杂信息的关键工具。尤其是在物理研究领域,科学家们经常需要处理大量的数据,并通过可视化将这些数据转化为更易理解的形式。TeeChart作为一个强大且灵活的图形展示工具,能够帮助…

前端按钮通过浏览器下载附件

html <a click"downloadAttach(record.memoryAddress)">下载附件</a> js downloadAttach(url){var fileUrl window._CONFIG[staticDomainURL] url;window.open(fileUrl); } 配置文件 window._CONFIG[staticDomainURL] http://127.0.0.1:3000/xxx…

Spring Cloud Gateway的使用

Spring Cloud Gateway的使用 1. Spring Cloud Gateway原理2. Spring Boot项目中集成Spring Cloud Gateway2.1 创建项目与添加依赖2.2 配置网关 3. 高级功能与实践**3.1 配置过滤器****3.2 分组路由** 4. 监控与故障处理5. 部署与持续集成 在微服务架构中&#xff0c;服务发现、…

计算机网络(一) —— 网络基础入门

目录 一&#xff0c;关于网络 二&#xff0c;协议 2.1 协议是什么&#xff0c;有什么用&#xff1f; 2.2 协议标准谁定的&#xff1f; 2.3 协议分层 2.4 OSI 七层模型 2.5 TCP/IP 四层模型 三&#xff0c;网络传输基本流程 3.1 局域网中两台主机通信* 3.2 报文的封装与…

uniapp网站和微信小程序 添加 百度统计

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、首先&#xff0c;需要在百度统计平台注册一个账户或登录现有的账户二、新建站点(应用)、添加代码三、代码获取与安装1.在官方网站 新增应用&#xff0c;根据官方…

kernel底层的蓝牙开发流程

kernel底层的蓝牙开发流程是一个复杂且细致的过程&#xff0c;它涉及到从内核配置、驱动编写、工具编译到最终的设备调试等多个环节。以下是一个详细的蓝牙开发流程&#xff0c;旨在为读者提供一个全面的视角。 一、前期准备 1. 确定开发环境 首先&#xff0c;需要确定开发所…

复数遍历4联通区域

怎么理解虚数和复数&#xff1f; - 知乎

python-禁止抽烟

题目描述 小理的朋友有 n 根烟&#xff0c;他每吸完一根烟就把烟蒂保存起来&#xff0c;k&#xff08; k>1&#xff09;个烟蒂可以换一个新的烟&#xff0c;那么小理的朋友最终能吸到多少根烟呢&#xff1f; 与某些脑筋急转弯不同的是&#xff0c;小理的朋友并不能从异次元借…

OpenHarmony 实战开发——一文总结ACE代码框架

一、前言 ACE_Engine框架是OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;的UI开发框架&#xff0c;为开发者提供在进行应用UI开发时所必需的各种组件&#xff0c;以及定义这些组件的属性、样式、事件及方法&#xff0c;通过这些组件可以方便进行OpenHarmo…

在 Vue 中实现跨项目数据传递

在 Vue 中实现跨项目数据传递可以通过以下几种方法&#xff1a; 一、使用本地存储&#xff08;Local Storage&#xff09; 存储数据 在一个项目中&#xff0c;可以使用localStorage.setItem()方法将数据存储到本地存储中。例如&#xff1a;localStorage.setItem(sharedData, J…

CentOS全面停服,国产化提速,央国企信创即时通讯/协同门户如何选型?

01. CentOS停服带来安全新风险&#xff0c; 国产操作系统迎来新的发展机遇 2024年6月30日&#xff0c;CentOS 7版本全面停服&#xff0c;于2014年发布的开源类服务器操作系统——CentOS全系列版本生命周期画上了句号。国内大量基于CentOS开发和适配的服务器及平台&#xff0c…

RESTful基本要求

文章目录 RESTful -Representational State Transfer1 什么是RESTful2 RESTful的特征3 如何设计符合RESTful 特征的API RESTful -Representational State Transfer 1 什么是RESTful 资源 &#xff08;Resources&#xff09; 网络上的一个实体&#xff0c;或者说是网络上的一个…

《Rust避坑入门记》第2章:解决多线程并发数据竞争的不可变性

从第1章所讨论的出现数据竞争问题的多线程并发剧院订票系统的代码能够看出&#xff0c;虽然可变性能够方便地随时修改值&#xff0c;但滥用可变性&#xff0c;会在多线程并发编程时&#xff0c;带来数据竞争的难题。 共享可变状态所带来的多线程并发时的数据竞争难题&#xff…

windows11交叉编译ffmpeg的android版本库

目录 1、工具准备 &#xff08;1&#xff09;MSYS2 &#xff08;2&#xff09;NDK&#xff08;也可直接用android studio安装的&#xff09; &#xff08;3&#xff09;ffmpeg源码 2、环境配置 3、创建编译脚本 4、编译 曾经看到一个博客说&#xff0c;不要用windows编译…

代码随想录算法训练营day58:图论08:拓扑排序精讲;dijkstra(朴素版)精讲

拓扑排序精讲 卡码网&#xff1a;117. 软件构建(opens new window) 题目描述&#xff1a; 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果文件 A 依…

macos 10.15 Catalina 可用docker最新版本 Docker Desktop 4.15.0 (93002) 下载地址与安装方法

按照docker官方的4.16.0版本发行日志"4.16.0: (2023-01-12 Minimum OS version to install or update Docker Desktop on macOS is now macOS Big Sur (version 11) or later.)" , 这个4.16.0版本就必须要求最低版本os为 11版本, 所以 旧版本的macos 10.15 Catalina …