优化Oracle库表设计的若干方法(2)
来源:asp之家 发布时间:2010-07-16 13:24:00
优化设计
1、将表数据和索引数据分开表空间存储
1.1 表数据和索引为何需要使用独立的表空间
Oracle强烈建立,任何一个应用程序的库表至少需要创建两个表空间,其中之一用于存储表数据,而另一个用于存储表索引数据。因为如果将表数据和索引数据放在一起,表数据的I/O操作和索引的I/O操作将产生影响系统性能的I/O竞争,降低系统的响应效率。将表数据和索引数据存放在不同的表空间中(如一个为APP_DATA,另一个为APP_IDX),并在物理层面将这两个表空间的数据文件放在不同的物理磁盘上,就可以避免这种竞争了。
拥有独立的表空间,就意味着可以独立地为表数据和索引数据提供独立的物理存储参数,而不会发生相互影响,毕竟表数据和索引数据拥有不同的特性,而这些特性又直接影响了物理存储参数的设定。
此外,表数据和索引数据独立存储,还会带来数据管理和维护上的方面。如你在迁移一个业务数据库时,为了降低数据大小,可以只迁出表数据的表空间,在目标数据库中通过重建索引的方式就可以生成索引数据了。
1.2 表数据和索引使用不同表空间的SQL语法
指定表数据及索引数据存储表空间语句最简单的形式如下。
将表数据存储在APP_DATA表空间里:
create table T_ORDER ( ORDER_ID NUMBER(10) not null, …)tablespace APP_DATA;
将索引数据存储在APP_IDX表空间里:
create index IDX_ORDER_ITEM_ORDER_ID on T_ORDER_ITEM ( ORDER_ID ASC)tablespace APP_IDX;
1.3 PowerDesigner中如何操作
1) 首先,必须创建两个表空间。通过Model->Tablespace...在List of Tablespaces中创建两个表空间:
2) 为每张表指定表数据存储的表空间。在设计区中双击表,打开Table Properties设计窗口,切换到options 页,按图 3所示指定表数据的存储表空间。
3) 为每个索引指定索引数据的存储表空间。在Table Properties中切换到Indexes页,在这里列出了表的所有索引,双击需设置表空间的索引,在弹出的Index Properties窗口中切换到Options页,按如下方式指定索引的存储表空间。
将表空间的问题延展一下:一个应用系统库表的表空间可以进行更精细的划分。
首先,如果表中存在LOB类型的字段,有为其指定一个特定的表空间,因为LOB类型的数据在物理存储结构的管理上和一般数据的策略有很大的不同,将其放在一个独立的表空间中,就可方便地设置其物理存储参数了。
其次,需要考虑库表数据的DML操作特性:根据DML(INSERT,UPDATE,DELETE)操作频繁程度,将几乎不发生任何DML操作的数据放在独立的表空间中,因为极少DML操作的表可设置符合其特性的物理参数:如PCTFREE可置为0,其BUFFER_POOL指定为KEEP,以便将数据缓存在KEEP数据缓存区中等等,不一而足。
此外,还可以考虑按业务需要将不同的业务模块分开存放,这主要是考虑到备份问题。假设我们有一部分业务数据重要性很强,而其他的业务数据重要性相对较弱,这样就可以将两者分开存储,以便设置不同的备份策略。
当然,无节制的细化表空间也将带来管理上和部署上的复杂,根据业务需求合理地规划表空间以达到管理和性能上的最佳往往需要更多的权衡。


猜你喜欢
- 在Python中,经常会去读csv文件,如下import pandas as pdimport numpy as npdf = pd.rea
- 一、什么是localStorage?在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了
- 通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的:这些图怎么做出来呢?今天就来分享下如何一步步绘
- 本文实例为大家分享了Pyqt实现无边框窗口拖动及大小改变的具体代码,供大家参考,具体内容如下做个记录,绘制边框阴影可以忽略这里不是主要根据网
- 前言在前几天的文章中我们讲解了如何从Word表格中提取指定数据并按照格式保存到Excel中,今天我们将再次以一位读者提出的真实需求来讲解如何
- 这篇文章主要介绍了通过实例解析Python调用json模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 我们的搜索示例仍然相当地简单,特别从数据验证方面来讲;我们仅仅只验证搜索关键值是否为空。 然后许多HTML表单包含着比检测值是否为空更为复杂
- 代码如下:<% Rem xml缓存类 '----------------------------
- 当管理SQL Server内在的帐户和密码时,我们很容易认为这一切都相当的安全。毕竟,你的SQL Server系统被保护在防火墙里,而且还有
- 本次小编给大家带来一个JS的效果,实现根据浏览器的窗口大小出现十字坐标并跟随鼠标移动的效果,还可以计算出实时的坐标数值。我们先来看一下运行后
- 前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等
- 一、表单效验规则的使用1、自定义效验规则介绍是否必填: required: true || fasle
- 前言新手程序员大概有如下特点if嵌套经常超过3层、经常出现重复代码、单个函数代码特别长。只会crud,对语言特性和语言的边界不了解。不懂面向
- Python ORM 概览作为一个美妙的语言,Python 除了 SQLAlchemy 外还有很多ORM库。在这篇文章里,我们将来看看几个流
- 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。我们永远不
- 在二维卷积函数tf.nn.conv2d(),最大池化函数tf.nn.max_pool(),平均池化函数tf.nn.avg_pool()中,卷
- 函数原型resample(self, rule, how=None, axis=0, fill_method=None, closed=No
- 经常用FLASH嵌入到网页里面,那咋能躲过W3C那个家伙呢?看下面!<object type="applicati
- 很久以前就知道微软的Petshop的很经典,昨天抽出时间去学习,一开始还真的不适应,什么成员资格,还真的看不太懂,运行petshop想从登陆
- 在GUI编程中有一个不容忽视的部分,那就是布局管理。布局管理掌控着我们的控件在应用程序窗口如何摆放。布局管理可以通过两种方式来完成。我们可以