不平衡的磁盘 I/O 和撤消会妨碍 性能 。这里讨论如何正确定位和配置一些与 Oracle 数据库 相关的物理数据文件。 主要讨论以下内容: [1] 使用磁盘阵列" name="description" />

Oracle优化经典文章--磁盘I/O和碎片篇

发表于:2007-06-22来源:作者:点击数: 标签:
MI LY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不平衡的磁盘 I/O 和撤消会妨碍 性能 。这里讨论如何正确定位和配置一些与 Oracle 数据库 相关的物理数据文件。 主要讨论以下内容: [1] 使用磁盘阵列

   

MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不平衡的磁盘I/O和撤消会妨碍性能。这里讨论如何正确定位和配置一些与Oracle数据库相关的物理数据文件。 主要讨论以下内容:

 

[1] 使用磁盘阵列

 

选择合理的RAID方式。

 

[2] 在可用的硬盘之间分布关键数据文件

 

要特别注意的文件:system表空间、TEMPORARY表空间、回滚段或UNDO表空间、联机重做日志文件(最好放在最快的磁盘上)、放在ORACLE_HOME文件夹下的关键Oracle文件、经常被访问的表的数据文件、经常被访问的索引的数据文件

 

经验总结:

 

把上面提到的数据文件分布在各个可用的磁盘上

把数据文件和索引文件分开放置

对于经常连接的表,把他们的数据和索引表空间分开

把控制文件的多个备份存储到不同的磁盘和控制器上

 

避免I/O磁盘争用,用下面的查询确定文件的I/O问题

select name,phyrds,phywrts,readtim,writetim

from v$filestat a,v$dbfile b

where a.file# = b.file#

order by readtim desc

 

说明:在磁盘上的物理写入和读取次数上如果出现很大的差别,就表明肯定有哪个磁盘负载过多!

 

如果出现磁盘负载不平衡,可以通过移动数据文件来均衡文件I/O

alter tablespace tablespace_name offline;

$cp /disk1/a.dbf /disk2/a.dbf;

alter tablespace tablespace_name rename datafile '/disk1/a.dbf' to '/disk2/a.dbf';

alter tablespace tablespace online;

$rm /disk1/a.dbf

 

[3] 使用本地托管的表空间

 

[4] 在大型表上使用表分区

 

[5] 使用索引分区

 

索引分区与分区表拥有同样的优点。如果正确执行,则通过访问索引的小片段而不是整个表上的索引可以提高性能。

 

[6] 了解碎片的概念以及如何消除碎片

 

经验总结:

 

使用本地托管的统一扩展表空间

在字典托管的表空间中使用统一的扩展大小(除了SYSTEM表空间外)

使扩展尺寸是数据库块尺寸的倍数

不要在字典托管的表空间上设定除0以外的任何PCTINCRREASE

把表放在有合适扩展大小的表空间中

正确设定PCTINCREASE

避免使用跨越多个不连续的数据文件的位图索引

 

[7] 使用撤消管理

 

如果想使大量的INSERTUPDATEDELETE操作速度更快,可以增大日志文件大小(可以增加用于介质恢复的时间),并确保这些文件在最快的磁盘上。

 

[8] 使用回滚段

 

下面查询显示回滚信息:

 

select a.name,b.extents,b.rssize,b.xacts,b.waits,b.gets,optsize,stauts

from v$rollname a,v$rollstat b

where a.usn = b.usn;

 

说明:如果xacts(活动事务)经常超出1,就需要增加回滚段的数目,以避免可能出现的争用。

 

把大的事务隔离到它们自己的回滚段上,用下面的语句:

commit;

set transation use rollback segment roll_segment_name;

delete from big_table;

commit;

 

[9] 使用更简单的方法:undo表空间

 

Oracle 9i新引入的功能。

 

[10]通过内存排序来减少磁盘I/O

 

[11]在不同的磁盘和控制器上存放多个控制文件

 

[12]使用裸设备改善有写操作频繁的数据的I/O

原文转自:http://www.ltesting.net