oracle数据段详解
Tablespace(表空间):表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都放在指定的表空间中,但主要存放的对象是表,所以称为表空间。
默认的系统表空间:system、sysaux、temp、undo、user
segments(段)
段是表空间的重要组织机构,段是指占用文件空间的统称,或数据对象使用的空间集合;段可以有表段、索引段、回滚段、临时段和高速缓存段。
段的类型:
聚簇 cluster
表 table
表分区 table partition
索引 index
索引分区 index partition
lob分区 lob partition(lob子分区 lobsub partition、lob索引 lob index、lob 段 lob segment)
嵌套表 nested table
回滚段 roll back
Table :
对于一个只有几百条几千条数据,一个学校的学生成绩表,那么一张表就是一个 segments 。
Table partition : 如果一张表非常大,里面存储了几千万条、上亿条记录,那么对这一张表进行操作,效率就非常低了。分区表是将大表的数据分成称为分区的许多小的子集。假如一张表是存放几亿条数据,那么这么多条记录是有规律的,可以基于某一个字段将其分开。那么可以根据某一字段类型分区,每个分区实际上就是一个独立的表,但在逻辑上这些分区又同属于一张表。
如果一张表是普通的表,只占一个 segments;如果一张表是 partition 的表,可能占用多个 segments。
Cluster :
Oracle 中普通的表称为堆表(heap table),堆表中的数据是无序存放的,往往在使用一段时间后,数据就变得非常无序。比如:索引中相同的 key 对应的数据存放在不同的 block 中,这时,如果要通过索引查询某个 key 的数据,就需要访问很多不同的 block,代价非常高。 我们发现很多表与表,他们的数据有相关性,因为我们访问一个表里的数据,往往要访问另一些表里的数据。我们可以把这些数据物理上存储在一块。
Index
索引是与表和聚集相关的一种选择结构,就当于我们一本书的目录,可以快快速的定位某章某节的页数。索引可以建立在一个表的一列或多列上,那就可以大大提高对表的查询。那么一个 index 也可能会占一个多个 segments 。
Index-organized table :
索引组织表(IOT),就是存储在一个索引结果中的表。存储在堆中的表是无组织的(也就是说,只要有可用的空间,数据可放在任何地方)。对你的应用来说,IOT 表和一个“常规”表并无差别。使用堆组织表时,我们必须为表和表主键上的索引分别留出空间。而 IOT 不存在主键的空间开销,因为索引就是数据,数据就是索引。
IOT 带来的好处不仅节约磁盘空间的占用,更重要的是大幅度降低了 I/O,减少了访问缓冲区 缓存(尽管从缓冲区缓存获取数据比硬盘要快得多,但缓冲区缓存并不是免费,而且也绝不是廉价的。每个缓冲区缓存获取都需要缓冲区缓存的多个闩(shuān),而闩是串行化设备,会限制应用的扩展能力)
Index partition
对于 table 有 partition ,那么对一个大的 index 有也 partition 。
分区所引可以分为全局分区索引与本地分区索引,其中本地索引又可以分为本地前缀索引和本地非前缀索引。 本地索引的分区和其对应的表分区数量相等,因此每个表分区都对应着相应的索引分区。使用本 地索引,不需要指定分区范围因为索引对于表而言是本地的,当本地索引创建时,Oracle 会自动 为表中的每个分区创建独立的索引分区。全局索引以整个表的数据为对象建立索引,索引分区中的索引条目既可能是基于相同的键值但是 来自不同的分区,也可能是多个不同键值的组合。全局索引既允许索引分区的键值和表分区键值 相同,也可以不相同。全局索引和表之间没有直接的联系,这一点和本地索引不同。
Undo segment 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使 用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可 以存放多个事务的回滚信息。
Temporary segment
当 Oracle 处理一个查询时,经常需要为SQL语句的解析与执行的中间结果(intermediate stage) 准备临时空间。Oracle 会自动地分配被称为临时段(temporary segment)的磁盘空间。例如, Oracle 在进行排序操作时就需要使用临时段。当排序操作可以在内存中执行,或 Oracle 设法利用 索引时,就不必创建临时段。
LOB segment
Large object(LOB)大大的对象,我们知道数据库不但可以存数据,有些可以存储视频声音图 片等文件,对于这种类型的文件一个大小几 MB,几十 MB 很正常。当然,有些数据库是不支持 LOB 数据块的,可以在表里存一个指针,来指向某个文件下的视频声音文件。
Nested table
嵌套表,表中表,和 LOB 思想很类似,就是在表里存一个指针,指针指向另外一张表。
段的创建:
在表、索引等创建的过程中(在 11gR2 中,段的创建要等到第一条数据被插入时),事实上即 在创建段,从 user_segment 可以查看已创建的段
SQL> create table test(id number,name varchar2(20));
然后查询
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
你会发现没有数据,插入一条数据试一下
SQL> insert into test(id,name) values(1,'test');
然后在查询
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
这个时候,你会查到数据了。
在 11gR2 中,只有插入数据后才会分配段空间,或者在 11g 中只要插入一条数据或者在创建表时指定 segment creation immediate 即可得到相同效果。
而 10g 中,创建表就会分配一个段空间。
SQL> create table test(id number primary key) segment creation immediate;
然后查询段
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
SQL> create table test3(id number primary key, describe clob, comment blob) segment creation immediate;
然后查询段
SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
由此可见,test1 只创建一个表的段,test2 创建了一个表段以及一个索引段,test3 创建了一个表段、一 个索引段、2 个 lobindex,2 个 lobsegment。
结论:创建一个表时,表的信息及数据可能会分散到多个段之中,每个段保存着一部分信息,而段由区组成,区由 oracle 块组成,oracle 块由操作系统组成。
创建一个新段时,默认由 1 个区、8 个块组成,共计 8K*8 空间,默认情况下 oracle 块大小为 8k.
oracle数据段详解的更多相关文章
- Oracle 数据泵详解
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...
- 转:Oracle 数据泵详解
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...
- Oracle数据泵详解
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...
- oracle 数据泵 详解
导出数据 1)按用户导 expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dir logfile=expdp.log ...
- oracle表分区详解
原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...
- Oracle权限管理详解
Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...
- Oracle表空间详解
Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...
- Oracle建立全文索引详解
Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能,当然也有很多方法可以在Oracle数据库中搜索文本,比如INSTR函数和LIKE操作: SELECT *FR ...
- [转载]oracle 高水位线详解
一.oracle 高水位线详解 出处: https://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html 一.什么是水线(High Wa ...
随机推荐
- Struts增删改查
1.导入相关的pom依赖(struts.自定义标签库的依赖) <dependency> <groupId>jstl</groupId> <artifactId ...
- C Vus the Cossack and Strings ( 异或 思维)
题意 : 给你两个只包含 0 和 1 的字符串 a, b,定义函数 f ( A, B ) 为 字符串A和字符串B 比较 存在多少个位置 i 使得 A[ i ] != B[ i ] ,例如 f(0011 ...
- Confluence 6 管理文件
文件是被附加到 Confluence 的页面上的.请参考 Upload Files 页面中的内容来了解如何附加文件到页面中. 一旦文件被附加到页面上了,你可以下载,删除和编辑这些文件.例如,你可以根据 ...
- noi.ac#458 sequence
题目链接:戳我 蒟蒻的第一道子序列自动机! 给定两个01串A,B,求一个最短的01串,要求C不是A,B的子序列.要求如果同样短,输出字典序最小的. 那么我们先构建A,B两个串的子序列自动机.然后我们设 ...
- 使用matplotlib绘制常用图表(3)-其他图表绘制
一.绘制三点图 """ 三月份最高气温 a = [12,15,18,6,7,5,6,8,9,10,15,10,4,5,11,10,5,6,12,15,10,5,14,10 ...
- Vue_(组件)实例方法
Vue.js实例方法/生命周期 传送门 常用的实例方法 数据: 传送门 vm.$set:设置属性值 vm.$delete:删除属性值 vm.$watch:观测数据变化 生命周期 vm.$mount:手 ...
- weblogic漏洞总结 复现(未完)
复现方式 Docker复现 WEBlogic爆出了很多漏洞 先了解一下现在主流的版本 Weblogic 10.3.6.0 Weblogic 12.1.3.0 Weblogic 12.2.1.1 Web ...
- [CSP-S模拟测试]:那一天她里我而去(堆优化Dijkstra)
题目传送门(内部题3) 输入格式 每个测试点有多组测试数据.第一行有一个正整数T表示数据组数.接下来对于每组数据,第一行有两个正整数n,m分别代表图的点数和边数.接下来有m行,每行三个整数u,v,d表 ...
- [CSP-S模拟测试]:循环依赖(拓扑)
题目传送门(内部题148) 输入格式 每个测试点第一行为一个正整数$T$,表示该测试点内的数据组数. 接下来$T$组数据,每组数据第一行一个正整数$n$,表示有引用单元格进行计算的单元格数,接下来$n ...
- java jsp基础介绍
1 Jsp基础 1.1 Jsp介绍 JSP(全称Java Server Pages)是一种web动态网页开发技术,通过标签和指令完成用户界面开发和交互操作.它使用J ...