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