表空间

当一个用户被创建以后,随之就要为用户分配数据存储的空间,这在oracle中成为“表空间”(Tablespace). 在数据库中创建用户时,基于应用性能和管理的考虑,最好为不同的用户创建独立的表空间。 用于存储永久数据的表空间通常被称为永久表空间,用于存储临时数据的表空间通常被称为临时表空间

逻辑上看,数据块是oracle的最小IO单元,即写入读出内存是以oracle中的块为单位的,oracle中的块通常由多个操作系统的块组成(操作系统的块应该就是该操作系统上文件系统的块,一个操作系统的块由若干磁盘的块组成)。多个oracle的块组成区间,区间是oracle创建对象的最小空间分配单位,。多个分区组成段,段存在于表空间中,因此,表空间可以被看作一个容纳各种对象段(表段,索引段等)的容器。 表空间作为数据库中的逻辑存储单元,可以包含一个或者多个物理文件,因此,表空间也可以被看成文件组。oracle数据库就是由一系列的表空间组成。

表空间的管理,表空间的管理实际上是针对于区间的管理,分成两种,字典管理表空间技术,即,当创建或者删除对象时,Oracle的空间分配和回收是通过数据库中的数据字典表来记录和管理的,这种技术主要在8i以前; 字典管理技术存在很多碎片,严重影响数据库的性能。8i以后,采用的是本地管理表空间技术,即不再使用数据字典来记录Oracle表空间里面的使用情况,而是在每个表空间的数据文件的头部加入了一个位图区域,在其中记录每个区间的使用状况(数据文件还有空区间??---数据文件对应一张表,一个表可以包含若干个段,一个段有若干个区间,所以每个数据文件有若干个区间)。

System表空间是Oracle数据库最重要的表空间,在创建数据库时被最先创建,其中包含了数据库的元数据。

在10g开始,Oracle推出了大文件表空间BigFile和小文件表空间SmallFile。大文件表空间只能包含一个文件,但是文件最大可以达到4GB个数据块的大小,按照Oracle通常支持的不同数据块的大小(2kb,4kb,8,16,32kb), 大文件表空间的大小可以支持到8TB---128TB.

段空间

在oracle数据库内部,对象空间是以段的形式存在和管理的。段和表对应,当一个段被创建的时候,区间就分配给段,段的存储空间不足,还可以以区为单位不断扩展。在Oracle的存储管理中,以区间为单位分配给段,在段内的时候,是以oracle的块为单位进行使用和管理。在9i以前,段空间采取的是手工段空间管理方式,即有一个freelist记录可用的块,(当一个块的空间使用率达到80%,将不会再增加数据,剩下的20%用于行更新带来的空间扩展需求;当一个块的空间使用率低于40%,才能放入freelist中,可以继续放入数据)。采用freelist的方式,会出现freelist称为瓶颈(多个事务并发请求段头空间freelist自由表时),即使增加为多个freelist,也只是缓解,;所以在9i后,oracle推出了自动段空间管理方式,将自由表freelist用位图取代,去除了块从freelist的删除和添加,所有的块全部放在位图中,不再“满-删除,空加入”的机制,块的使用率显示在位图的状态(集中状态)中。并且如果位图可以支持二级,多级的位图架构。

在11g前,当创建一个实体对象时,比如表,数据库就为该对象创建段,为段分配空间,但是,这种状态在有些只创建表,不插入数据的情景下,会造成空间的浪费,所以在11g的时候,引入了延迟段空间创建技术,即:当创建对象时,只存储数据结构定义,并不创建数据段,直到有第一行记录插入时才动态创建分配段空间。这样就可以省去,数据库系统初始化时因创建大量表而消耗的时间和空间。

(手动段管理)高水位标记HWM, 一个段分成三部分,header block,used block(row data),unused block其中used block和unused block之间的分界线就是高水位标记HWM,当进行全表扫描的时候,会扫描到HWM下的所有数据块,即使used block中很多数据被删除了,全表扫描还是以HWM为准。当插入insert时,freelist中没有空闲块,HWM会向上移动,但是只会向上移动,不会自动收缩,即使delete大量数据,导致HWM下有很多空闲块。

(自动段管理)低高水位LHWM和高高水位HHWM, LHWM下都是格式化的块,HHWM上都是未格式化的块,两者之间可能格式化的块和未格式化的块同时存在,全表扫描的时候,会将HHWM下的所有块都扫描完。

oracle的存储结构的更多相关文章

  1. ORACLE数据库存储结构简介(转)

    首先,oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的.   逻辑存储结构:oracle内部的组织和管理数据的方式.  物理存储结构:o ...

  2. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

  3. ORACLE管理存储结构之物理机构+逻辑结构【weber出品】

    一.数据库的存储结构有物理结构和逻辑结构组成的 物理结构:物理上,oracle是由一些操作系统文件组成的 SQL> select name from v$datafile; NAME ----- ...

  4. oracle逻辑存储结构

    oracle数据库管理系统有三个重要的概念:实例.数据库.数据库服务器.oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构.逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理 ...

  5. ORACLE数据库存储结构

    一.数据块 Oracle对数据库数据文件中的存储空间进行管理的单位是数据块.数据块是数据库中最小的(逻辑)数据单位,是最小的I/O单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节.每 ...

  6. ORACLE物理存储结构

    1.查看数据库实例基本信息: SQL> SELECT DBID,NAME,CREATED,LOG_MODE,OPEN_MODE,FORCE_LOGGING,CURRENT_SCN,FLASHBA ...

  7. 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构

    目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...

  8. Oracle 存储结构

    数据库是存储数据的容器,它的主要功能是保存和共享数据. oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内 ...

  9. ORALCE逻辑存储结构

    ORACLE逻辑存储结构块: 数据块 他是最基础的逻辑存储单元,数据以行的形式存储到我么的数据块中 区 :多个块的集合 并且区组成了物理的数据文件 段 :(表 索引 物化视图 物化视图日志 大对象 大 ...

随机推荐

  1. Show()和ShowDialog()

    show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不 ...

  2. ccs6.0使用问题记录

    ccs6.0使用问题记录 彭会锋 1 编译过程中提示warning  " Description Resource Path Location Type #9-D nested commen ...

  3. android 获取字符串的方法

    字符串数组可以在value文件夹中声明: 书写的内容是: 两者的读取方式略有不同: 如果是读取数字的话,  使用: context.getResources().getStringArray( R.a ...

  4. C++一个简单的类

    从基本数据类型说起: 一般情况下,c++中的基本数据类型有int ,char,,,, 但是这些数据类型是有限的,而且还是C++中自带的,缺乏灵活性 于是C++提供了一种定义自定义类型的方式----使用 ...

  5. JDK1.7-LinkedList循环链表优化

    最近在看jdk1.7的时候,发现LinkedList 和1.6中的变化. 首先,简单介绍一下LinkedList: LinkedList是List接口的双向链表实现.由于是链表结构,所以长度没有限制: ...

  6. 读流testDemo

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.I ...

  7. HDU 5768 中国剩余定理

    题目链接:Lucky7 题意:求在l和r范围内,满足能被7整除,而且不满足任意一组,x mod p[i] = a[i]的数的个数. 思路:容斥定理+中国剩余定理+快速乘法. (奇+ 偶-) #incl ...

  8. linux系统字符集

    Linux中中文乱码问题通常是由于字符集与windows不兼容所引起,windows的中文字符集是双字节的GBK编码linux采用的是3字节的utf-8编码,所以在windows下用工具连接linux ...

  9. 使用反射来编写实体类的XML

    前言: 开发过程中经常需要返回某实体类的列表,公司通常用的都是XML格式的接口,小猪借鉴了公司前辈留下的代码一直是类似这么写的: public static string GetXMLList(ILi ...

  10. City Skyline

    题目大意:(poj 3044) 给出城市的正视图,所有的大楼都是矩形,给出正视图每个高度改变时的坐标,问最少有多少大楼.一共N个矩形,N<=50000 解题过程: 首先可以把问题转化一下:有N块 ...