分类: Oracle
2008-04-15 12:45:16
来源:赛迪网 作者:Alizze |
4. Oracle815引入了本地管理表空间,它在管理和性能上都优于传统的字典管理表空间,它已融合了规则1、2、3 ;要使用此特性,在CREATE TABLESPACE语句中指定EXTENT MANAGEMENT LOCAL子句;
5. 段的区片数目上限应在4096之下,DML操作在此区片数目范围内不会有明显的性能差异;但某些DDL操作的速度则与区片的数目关系较大;因此合理的区片数目应保持在1024之下;对于持续不断扩展的段,应监控区片数目,在必要时移至其它表空间;
6. 对于特别大的数据段应控制在4G-128G(Oracle7为5G-160G)之间,它们应存放到单独的表空间上,同时对于这些特大段应考虑使用分区拉提高性能;
7. 用户的临时表空间应使用TEMPORARY类型;
8. 当系统的事务规模比较均衡时可以对回滚段使用OPTIMAL参数,否则应避免制定OPTIMAL参数,而定期监控回滚段的大小,并在必要时重建;
9. 临时段和回滚段绝对不要将用户数据存放到SYSTEM表空间,它是专为永远不会Drop和Truncate的系统数据对象而设计的;
10. 创建表空间时指定数据文件的大小应=区片整数倍+1数据块,对于Local Managed Tablespace则为区片整数倍+64K;
11. 当表空间使用统一的区片大小时,不要对其进行空间整理,重整的结果不仅耗费精力而且可能会使性能变差;对于未使用统一的区片尺寸的表空间应通过Export/Import重整;
12. 8i 提供了Alter Table …Move [Tablespace…]命令可用于快速重整表,Alter Index …Rebuild…[Tablespace…] 命令可用于快速重建索引。
有关使用单个区片的误导
在许多关于碎片整理的文档中建议在Export时使用Compress=Y选项,将表中的所有数据调整到一个区片中,期望在Import后获得良好性能。由此让许多人产生一个观点,认为当表中数据全部存放到一个区片中时,可以获得良好性能。实际上单区片段只在以下条件成立时,才具有优越性。
数据主要以(全段)扫描方式访问;
段所对应的数据块在物理磁盘上连续存放,Oracle可以发布较大的顺序磁盘读操作;
通过对这两条进行分析可以发现,一方面数据库中大部分表是通过索引来访问,另一方面现在的数据库文件一般在物理上使用了RAID5或RAID0+1技术,数据以条带化方式分布到多个物理磁盘上,逻辑上的单个区片和多区片在物理上并无本质上的区别;另外,从Oracle的角度来看,管理几百个区片的段是非常轻松的并不会有性能的下降。由此可见将整个段放到一个区片中并无明显好处,而这种做法却会导致表空间碎片的产生。
三、表数据段的使用
表空间的组织
Heap表的空间由一系列区片链接而成,每个数据块除块头外其余部分可用于存放数据,在创建表时可以指定以下参数:
PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块中;
PCTUSED:指定块中数据使用空间的最低百分比;当一个块在达到PCTFREE,之后经历了一些DELETE操作,在其空间使用下降到PCTUSED后便可以重新被用于INSERT数据;这就是PCTFREE/PCTUSED参数的含义;
调整PCTFREE、PCTUSED参数的目标一方面是提高性能,另一方面则主要是提高空间使用效率,避免出现块中存在有许多未用的空间,但却无法找到一个块可以被用于插入新数据行的情况发生。 |