优化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数据缓存区中等等,不一而足。

  此外,还可以考虑按业务需要将不同的业务模块分开存放,这主要是考虑到备份问题。假设我们有一部分业务数据重要性很强,而其他的业务数据重要性相对较弱,这样就可以将两者分开存储,以便设置不同的备份策略。

  当然,无节制的细化表空间也将带来管理上和部署上的复杂,根据业务需求合理地规划表空间以达到管理和性能上的最佳往往需要更多的权衡。

标签:数据库优化,oracle,表
0
投稿

猜你喜欢

  • oracle日志操作模式(归档模式和非归档模式的利与弊)

    2024-01-24 18:01:36
  • HTML4标签的默认样式列表

    2007-09-28 22:00:00
  • js实现简单的放大镜效果

    2024-04-30 08:52:03
  • go程序测试CPU占用率统计ps vs top两种不同方式对比

    2024-05-05 09:27:04
  • 整理一个asp多级树型分类问题的解决方法

    2007-10-17 18:38:00
  • JavaScript函数重载操作实例浅析

    2024-04-25 13:12:04
  • python开发之基于thread线程搜索本地文件的方法

    2023-05-11 18:49:12
  • Python3中最常用的5种线程锁实例总结

    2022-06-19 08:21:02
  • Python中的getopt函数使用详解

    2023-04-07 03:08:00
  • TensorFlow 滑动平均的示例代码

    2023-10-25 15:41:28
  • Pandas时间序列重采样(resample)方法中closed、label的作用详解

    2023-01-31 17:46:36
  • [翻译]网页设计中的模式窗口

    2009-05-29 18:00:00
  • Python打工人必备之windows倒计时锁屏功能的实现

    2021-01-18 04:21:21
  • python获取引用对象的个数方式

    2023-06-19 23:10:30
  • 异步完成后新开窗口

    2010-04-06 12:37:00
  • python抓取京东商城手机列表url实例代码

    2022-11-11 18:23:04
  • Python中logging日志库实例详解

    2023-10-04 13:26:25
  • python异常处理和日志处理方式

    2023-04-25 09:36:54
  • 利用python实现查看溧阳的摄影圈

    2021-09-05 21:33:16
  • Django后台admin的使用详解

    2023-11-21 14:57:50
  • asp之家 网络编程 m.aspxhome.com