Oracle表空间设计

Oracle表空间设计

表空间设计原则:

1.        为表和索引分配不同的tablespace。

2.        为正式表和历史表分配不同的tablespace,提高数据的安全性。

3.        为大数据量表单独分配tablespace。

4.        将只读表或以读取为主的表单独分配tablespace。

5.        以高频率更新的表分成一组,单独分配tablespace。

6.        存于同一个 tablespace中的表(或索引)的extent 大小最好成倍数关系,有利于空间的重利用和减少碎片。

7.     为不同类型的数据分配不同的表空间,这样既可以提高数据库输入输出性能,也有利于数据的备份和恢复等管理工作。因为我们数据库管理员在备份或者恢复数据的时候,可以按表空间来备份数据。如在设计一个大型的分销系统后台数据库的时候,我们可以按省份建立表空间。与浙江省相关的数据文件放置在浙江省的表空间中,北京发生业务记录,则记录在北京这个表空间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表空间即可。很明显,这样设计,当某个表空间中的数据出现错误需要恢复的时候,可以避免对其他表空间的影响。

 

 

表空间设计注意:

1.        合理利用表空间大小。根据不同的表空间设计意图,结合实际情况,分配不同的表空间大小。

2.        合理利用服务器空间。根据实际情况,可以为不同的表空间配置不同存储位置。

 

 

设计:

1.        因为系统配置表以读取为主,故单独分配表空间:TS_SYS_DATA。

2.        为系统配置表索引分配单独表空间:TS_SYS_INDEX.

3.        为用户操作表分配单独表空:TS_MAIN_DATA,用户默认表空间。

4.        为用户操作表索引分配单独表空间:TS_MAIN_INDEX。

5.        为用户操作的大数量表分配单独表空间:TS_MAIN_BIG_DATA。

6.        为用户操作历史表分配单独表空间:TS_HIS_DATA。

7.        为用户操作大数据量历史表分配单独表空间:TS_HIS_BIG_DATA。

8.        为用户操作的历史表索引分配单独的表空间:TS_HIS_INDEX。

9.        创建临时表空间:TS_TEMP。

 

 

创建表空间sql语句介绍:

方式一、

CREATE TABLESPACE TS_MAIN_DATA

   DATAFILE'D:\oracle\oradata\TS_MAIN_DATA' size 500M

   EXTENT MANAGEMENT LOCALAUTOALLOCATE

/

方式二、

CREATETABLESPACE TS_HIS_DATA

   DATAFILE 'D:\oracle\oradata\TS_HIS_DATA'size 1000M

   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M

/

方式三、

CREATETABLESPACE PROJECT_MAIN_DATA

DATAFILE

  'E:\Oracle_DBData\PROJECT\PROJECT_DAT01' SIZE1990M REUSE AUTOEXTEND OFF,

  'E:\Oracle_DBData\PROJECT\PROJECT_DAT02' SIZE1990M REUSE AUTOEXTEND OFF,

  'E:\Oracle_DBData\PROJECT\PROJECT_DAT03' SIZE1990M REUSE AUTOEXTEND OFF,

  'E:\Oracle_DBData\PROJECT\PROJECT_DAT04' SIZE1990M REUSE AUTOEXTEND OFF

  LOGGING

  ONLINE

  PERMANENT

  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M

/

 

extent是“区间”的意思。在oracle数据库中,extentmanagement 有两种方式 extent management local(本地管理); extentmanagement dictionary(数据字典管理);默认的是local。每种也有两种大小增长方式:

uniform:默认为1M大小,在temp表空间里为默认的,但是不能被应用在undo表空间。

本地管理表空间与字典管理表空间相比大大提高了管理效率和数据库性能,其优点如下:

1.      减少了递归空间管理

本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新。这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间管理,提高了管理效率。同时由于本地管理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间管理,提高了数据库性能。

2.      系统自动管理extents大小或采用统一extents大小

本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。

3.      减少了数据字典之间的竞争
因为本地管理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。

4.      不产生回退信息

因为本地管理表空间的空间管理除对表空间的额度情况做更新之外不修改其它任何数据字典表,因此不产生回退信息,从而大大提高了数据库的运行速度。

5.      不需合并相邻的剩余空间

因为本地管理表空间的extents空间管理会自动跟踪相邻的剩余空间并由系统自动管理,因而不需要去合并相邻的剩余空间。同时,本地管理表空间的所有extents还可以具有相同的大小,从而也减少了空间碎片。

6.      减少了空间碎片

7.      对临时表空间提供了更好的管理

autoallocate:
You can convert a tablespace from dictionary extent management to local extentmanagement
and back with the Oracle-supplied PL/SQL package DBMS_SPACE_ADMIN. The SYSTEM
tablespace and any temporary tablespaces, however, cannot be converted fromlocal to the
older style dictionary managem
两种extent管理方式是可以相互转换的,利用PL/SQL DBMS_SPACE_ADMIN
但是系统表空间和临时表空间不能从local管理转化到dictionary管理。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计规范 2017年11月3日 oracle数据库表设计全文共29页,当前为第1页。 表设计范式 表与表关联关系 主键、外键、约束 表分区 目录 oracle数据库表设计全文共29页,当前为第2页。 表设计规范-范式 1NF:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的 那么符合第一模式的特点就有 1)有主关键字 2)主键不能为空, 3)主键不能重复, 4)字段不可以再分 例如: StudyNo " Name " Sex " Contact 20040901 john Male Email:[email protected],phone:222456 20040901 mary famale email:[email protected] phone:123455 以上的表就不符合,第一范式:主键重复(实际中数据库不允许重复的),而且Contact字段可以再分所以变更为正确的是 StudyNo " Name " Sex " Email " Phone 20040901 john Male [email protected] 222456 20040902 mary famale [email protected] 123455 oracle数据库表设计全文共29页,当前为第3页。 表设计规范-范式 2NF:如果关系模式R是第一范式的,而且关系中每一个非主属性不部分依赖于主键,称R是第二范式的 满足第一范式的前提下,消除部分函数依赖 StudyNo " Name " Sex " Email " Phone " ClassNo " ClassAddress 01 john Male [email protected] 222456 200401 A楼2 01 mary famale [email protected] 123455 200402 A楼3 这个表完全满足于第一范式, 主键由StudyNo和ClassNo组成,这样才能定位到指定行 但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress), 所以要变为两个表 表一 StudyNo " Name " Sex " Email " Phone " ClassNo 01 john Male [email protected] 222456 200401 01 mary famale [email protected] 123455 200402 表二 ClassNo " ClassAddress 200401 A楼2 200402 A楼3 oracle数据库表设计全文共29页,当前为第4页。 表设计规范-范式 3NF:不存在非主属性的传递性依赖以及部分性依赖 StudyNo " Name " Sex " Email " bounsLevel " bouns 20040901 john Male [email protected] 优秀 $1000 20040902 mary famale [email protected] 良 $600 这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖 更改为: 表1: StudyNo " Name " Sex " Email " bouunsNo 20040901 john Male [email protected] 1 20040902 mary famale [email protected] 2 表2: bounsNo " bounsLevel " bouns 1 优秀 $1000 2 良 $600 oracle数据库表设计全文共29页,当前为第5页。 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性:   (1) 原子性。基本表中的字段是不可再分解的。   (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。   (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。   (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。 理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。 例如: 表1 商品表的表结构  商品名称 商品型号 单价 数量 金额  电视机 29寸 2,500 40 100,000增加"金额"这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。 oracle数据库表设计全文共29页,当前为第6页。 表设计范式 表与表关联关系 主键、外键、约束 表分区 目录 oracle数据库表设计全文共29页,当前为第7页。 表与表关联关系 表关联: 一对一、一对多 、多对多 要善于识别与正确处理多对多的关系 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值