oracle体系结构-内存篇
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内存结构 -- SGA
共享池 (shared pool)
– Oracle DB 使用共享SQL 区域(以及PGA 中保留的专用SQL 区域)来表示它所运行的每个SQL 语句。共享SQL 区域包 含给定SQL 语句的语法分析树和执行计划, Oracle DB 可识 别两个用户执行相同SQL 语句的情况,从而为这些用户重 用共享SQL 区域。Oracle DB 通过为多次运行的SQL 语句使 用一个共享SQL 区域来节省内存。当许多用户运行同一个 应用程序时,同一SQL 语句通常会多次运行。
Oracle 体系结构
No.1 内存结构
本章目标
了解数据库概念 了解oracle体系结构概念 理解什么是SGA 理解什么是PGA
Oracle体系结构 -- 概要
数据库是什么?
– 简单的说数据库就是电子数据的文件存储仓库 – 数据库是按照数据结构来组织、存储和管理数据的仓库 – 用户可以对数据库的数据进行新增、删除、更新、查询等 操作
内存结构 -- SGA
大型池 (large pool)
为以下内容提供大型内存分配: – 共享服务器的会话内存和Oracle XA 接口 – I/O 服务器进程 – Oracle DB 备份和还原操作 注:XA协议是资源管理器(数据库)与事物管理器的接口标 准。Oracle、Informix、DB2和Sybase等各大数据库厂家都提 供对XA的支持
本章总结
数据库就是电子数据的文件存储仓库 Oracle database 是一款关系数据库管理系统 Oracle数据库体系结构: – 1、内存结构
– 2、进程结构 – 3、存储结构
本章总结
内存结构
– 系统全局区(System Global Area,SGA): – 程序全局区(Program Global Areas,PGA):
课后思考:
– SGA和PGA的区别?
本章结束!谢谢!
20150502 20160601 ……
张三 李燕
王五 马六 ……
男 女
男 男 ……
1981.3 1991.2
1990.3 1995.6 ……
销售部 人事部
销售部 销售部 ……
销售经理 招聘专员
销售专员 实习生 ……
Oracle体系结构 -- 概要
Instance
PGA Server process
内存结构 -- PGA
堆栈区(Stack Space)
– 保存变量信息 – 保存着会话变量、SQL语句运行时的内存结构等重要信息
注:为了提高SQL语句的重用性,会在SQL语句中使用绑定变量。 简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入 不同的变量值,就可以满足不同的查询需求。
内存结构 -- SGA
共享池 (shared pool)
– 在SQL 语句语法分析期间,Oracle DB 会频繁访问数据字典, 因此在内存中指定了两个特殊的位置来存放字典数据。 – 一个区域称为“数据字典高速缓存”,包含数据字典表中 各表、列和权限的定义 – 另一个用于存放字典数据的区域称为“库高速缓存”,包 含语句文本、已进行语法分析的代码和执行计划 所有Oracle DB 用户进程都共享这两个高速缓存以便访问数据 字典信息。
工号 20110502 20140102 20150502 20160601 …… 姓名 张三 李燕 王五 马六 …… 性别 男 女 男 男 …… 出生年月 1981.3 1991.2 1990.3 1995.6 …… 所属部门 销售部 人事部 销售部 销售部 …… 所属岗位 销售经理 招聘专员 销售专员 实习生 ……
– 实例由内存结构和后台进程构成; – 数据库包括物理结构和逻辑结构。
Oracle数据库体系结构: – 1、内存结构
– 2、进程结构 – 3、存储结构
Oracle体系结构 -- 内存结构
Oracle DB 针对各种用途创建和使用内存结构。
例如,使用内存来存储正在运行的程序代码、在各用户之间 共享的数据以及所连接的每个用户的专用数据区域。
内存结构 -- PGA
会话区(User Session Data)
– 当用户进程与数据库建立会话时,系统会将这个用户的相 关权限查询出来,然后保存在这个会话区内。当用户进程 在访问数据时,系统就会核对会话区内的用户权限信息, 看看其是否具有相关的访问权限。由于系统将这个用户的 权限信息存放在内存上,所以其核对用户权限的速度非常 的快。 – 通常情况下,会话区内保存了会话所具有的权限、角色、 性能统计等信息。这个会话区一般都是由数据库进行自我 维护的,不需要人工干预。
内存结构 -- PGA
游标区(Cursor State)
– 游标区是一个动态的区域。当用户执行游标语句时,系统 就会在这个游标区内创建一个区域。当关闭游标时,这个 区域就会被释放。
注:游标是一种临时的数据库对象 游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集 是由SELECT语句产生,如果处理过程需要重复使用一个记录集,那么创 建一次游标而重复使用若干次,比重复查询数据库要快的多。
内存结构 -- SGA
数据库缓冲区高速缓存 (database buffer cache)
– 存放从数据文件读取的数据块的副本
并行连接到实例的所有用户共享对数据库缓冲区高速缓存的访问,Oracle DB 用户进程第一次需要特定数据片段时,将在数据库缓冲区高速缓存中 搜索数据。 如果该进程在高速缓存中找到数据(称为高速缓存命中),则直接从内 存中读取数据。 如果进程在高速缓存中找不到数据(称为高速缓存未命中),则在访问 数据之前,必须将磁盘上的数据文件中的数据块复制到高速缓存中的缓 冲区中。 高速缓存命中时访问数据要比高速缓存未命中时访问数据快。
一个实例有两个关联的基本内存结构:
– 系统全局区(System Global Area,SGA):
这些组件包含一个Oracle DB实例的数据和控制信息。SGA 由所有服 务进程和后台进程共享。
– 程序全局区(Program Global Areas,PGA):
包含某个服务器进程或后台进程的数据及控制信息的内存区域。PGA 是每个服务进程和后台进程所私有的:即每个进程都有一个 属于自 己的 PGA。
Memory Structures (System Global Area) Server
Process Structures
User process
Database (Storage Structures)
Client
Oracle体系结构 -- 概要
Oracle 数据库服务器由一个Oracle 数据库(静态) 以及 一个或多个oracle实例(动态)组成。
内存结构 -- PGA
PGA包括:
– SQL工作区(SQL Working Areas) – 会话区(User Session Data)
– 堆栈区(Stack Space)
– 游标区(Cursor State)
内存结构 -- PGA
SQL工作区(SQL Working Areas) 包括
– 排序区、多表hash连接区,位图连接区,创建位图区 – 排序区:当用户需要对数据进行排序时,数据库系统会将 需要排序的数据保存到PGA程序缓存区中的排序区内,然 后再在这个排序区内对这些数据进行排序。通常排序区的 大小可以采用系统默认值,但是在一些大型应用中,可以 手工调整这个排序区的大小,以提高排序的性能。
共享池 (shared pool)
– 包含库高速缓存、数据字典高速缓存、并行执行消息的缓 冲区以及用于系统控制的各种内存结构。
注:数据字典
– 数据库是数据的集合,数据库维护和管理这用户的数据,那么这些用 户数据表都存在哪里,用户的信息是怎样的,存储这些用户的数据的 路径在哪里,这些信息不属于用户的信息,却是数据库维护和管理用 户数据的核心,这些信息就是数据库的数据字典来维护的,数据库的 数据字典就汇集了这些数据库运行所需要的基础信息
内存结构 -- SGA
百度文库
SGA包括
– – – – – – 数据库缓冲区高速缓存 (database buffer cache) 重做日志缓冲区 (redo log buffer) 共享池 (shared pool) 大型池 (large pool) Java 池 (java pool) 流池 (streams pool)
内存结构 -- SGA
Java 池 (java pool)
– 用于存储在JVM中所有特定会话的Java代码和数据。
内存结构 -- SGA
流池 (streams pool)
– 流池是从10g开始才增加的一个新的SGA结构。 – 流池会用于缓存流进程在数据库间移动/复制数据时使用的 队列消息。
注:Oracle Stream功能是为提高数据库的高可用性而设计的 Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析 成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数 据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术, 对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数 据库对象级甚至整个数据库的同步。
Oracle体系结构 -- 概要
Oracle数据库
– Oracle database 是一款关系数据库管理系统 – 关系数据库把一些复杂的数据结构归结为简单的二元关系 (即二维表格形式)。例如某单位的职工关系就是一个二元 关系表。
工号 姓名 性别 出生年月 所属部门 所属岗位
20110502 20140102
内存结构 -- SGA
重做日志缓冲区 (redo log buffer)
– 是SGA 中的循环缓冲区,存放有关对数据库所做更改的信 息
服务器进程更改缓冲区高速缓存时,系统会生成重做条目,并将生成的 重做条目写入SGA 中的重做日志缓冲区。重做条目占用缓冲区中连续的 顺序空间。
内存结构 -- SGA