存储和索引:算法
oracle中,一个数据库是由存储在文件中的信息组成的,而且经过一个实例来访问数据库
它是一个共享存储区和一组与文件中的数据交互的进程安全
控制文件是一个小文件,包含一些启动或操做实例所需的很是高层的元数据数据结构
表空间:oracle
数据库由一个或多个称做表空间的逻辑存储单元组成的函数
表空间又由一个或多个称做数据文件的物理结构组成,数据文件多是文件系统的一部分,或是原始的设备性能
一个oracle数据库一般包括如下表空间:大数据
1 系统表空间和辅助的sysaux表空间老是被建立,包含数据字典表、触发器和存储过程的存储器优化
2 建立的存储用户数据的表空间,虽然用户数据能够存储在系统表空间,但将用户数据与系统数据分离通常是值得的加密
决定要建立另外哪些表空间是基于性能、可用性、可维护性以及易于管理来考虑的
3 撤销表空间:仅仅用于存放事务管理和恢复的撤销信息
4 临时表空间:许多数据库操做须要对数据进行排序,若是排序不能再内存中完成,排序例程可能须要将数据暂时保存在硬盘上
表空间也能够做为在数据库之间转移数据的一种方式,
oracle经过简单地复制数据文件并导入和导出少许的数据字典元数据,就容许一个表空间中的全部数据从一个系统转移到另外一个系统
oracle称为可移动表空间
段:
表空间中的空间被划分为一个个单元,称为段。每一个段包含一种特定数据结构的数据:
1 数据段:表空间中的每一个表都有本身的数据段,表数据就存储在这里
2 索引段:
3 临时段:当排序操做须要将数据写到硬盘上时,或者将数据插入到临时表中
4 撤销段:这些段包含了撤销信息,使未提交事务能够回滚
在段这一层下,空间已盘区的粒度级别进行分配,每一个盘区由一组连续的数据库块组成
数据库块是oracle进行磁盘I/O的最低的粒度级别。数据库块地大小没必要和操做系统中的块相同,但必须是它的倍数
表:
oracle中的标准表以堆组织(通常为二叉树)的,表中行的存储位置不是由该行所包含的值决定的,而是在行被插入时肯定的
按索引组织的表:
在一个按索引组织的表中,记录存储在oracle的B树索引中,而不是堆中
压缩:
oracle的压缩特性容许数据以压缩格式存储,压缩极大地下降了存储数据所需的空间和检索数据所需的I/O操做数。
oracle的压缩方法是一种无损的、基于字典的算法,它单独地压缩每一个块
全部用来解压一个块地信息就包含在那个块自身中
算法把在块中重复出现的值替换为指向块中符号表(或字典)中该值所对应项的指针
项能够基于单独地列或者列的组合中重复的值
数据安全:
1 加密
2 数据库保险库
3 虚拟私人数据库
索引:
位图索引:
位图索引使用位图表示索引项,当被索引的列有适中数量的不一样值的时候,这种表示能够实质性地节省空间
字节对齐位图压缩:两个连续的1之间的距离足够小的部分存储为逐字位图,距离大的话,存储为0的个数
根据经验,若是不一样码值数目少于表中行数的一半,位图索引应该比常规B树索引空间利用率更高
例如,在一个具备100万行的表中,若是少于50万个不一样取值的列上建立的是位图索引,可能更节省空间
对于取不多的、不一样值的列,这样的索引的空间优点能以更少的磁盘I/O带来相应的性能优点
基于函数的索引:
能够在包含一个或多个列的表达式上建立索引,例子:在表达式upper(name)上建立索引
链接索引:
索引中行标识所指向的关键字列并不在表中。
域索引:
oracle容许非oracle原生的索引结构对表进行索引,
这种扩展特性容许软件厂商为特定应用领域。如文本、空间数据和图像,开发插卡式的功能
划分:
oracle支持多种对表和索引的水平划分方式,而且这种特性在oracle支持特大数据库的能力中发挥着重要做用
优势:
1 备份和恢复更容易也更快速,由于能够对单独的分区进行而不是对整个表进行
2 数据仓库环境下的加载操做不那么生硬,数据能够添加到新建立的分区,而后把分区添加到表中
3 查询性能得到实质性受益
被划分的表上的索引能够是全局索引,或者是局部索引。
全局索引中的项能够指向任何分区中的行,局部索引的表对每一个划分有一个物理索引
范围划分:
在范围划分中,划分标准是值的范围,此划分类型特别适合于日期列
散列划分:
散列函数根据划分列中的值把行映射到分区中
列表划分:
与特定分区相关的值在一个列表中声明
复合划分:
被范围、区间或列表划分的表能够进行范围、列表或者散列子划分
参照划分:
划分关键字是基于另外一个表的外键约束来定的
物化视图
查询处理和优化:
执行方法:
数据能够经过多种访问方法来访问:
1 全表扫描:
2 索引扫描
3 索引快速扫描
4 索引链接
5 簇和散列簇访问
oracle有几种方法把来自多个索引的信息合并在单个访问路径里,
这种能力容许多个where字句条件一块儿使用来尽量有效地计算出结果集
优化:
查询转换:
oracle支持的转换和重写的一些主要类型以下:
1 视图合并
2 复杂视图合并
3 子查询整平
4 物化视图重写
5 星型转换
访问路径选择:
oracle有一个基于代价的优化器来决定链接顺序、链接方法以及访问路径