分类: Oracle
2008-04-26 13:32:01
ORALCE的配置上调优的参数很少,并且调试ORALCE的配置提高的性能也有限。程序上的问题主要包括:SQL语句拼写的有问题;数据库设计没建索引或索引没有应用上。
以下是个人在几个项目中对ORACLE调优的一些技术参考信息:
1、字段类型上的差别
在数据库设计上字段类型的设计很关键,CHAR和VARCHAR2类型有很大的差别,CHAR是固定字符长度的类型,当值的长度不足时,系统会自动补充空格,那么字段类型是CHAR是,索引就没法应用上,所有在字段使用上没特殊要求尽量使用VARCHAR2类型。
2、索引被抑制
当建立了索引,还有在SQL语句中很好的利用,避免出现SQL语句错误的拼写导致索引被抑制。
WHERE TO_CHAR(A)=’
WHERE A+7>15应该改为WHERE A>8
3、Oracle的优化器(在使用索引时有关键性的应用)
在9I之前,统计信息需要手工采集,
运用了统计,因为这是成本最低的一种解决方案,根本不需要改代码:
Exec dbms_stats.gather_schema_stats(ownname=> ‘eximuser’,cascade=>true)
对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。
a) 可以并行进行,对多个用户,多个Table
b) 可以得到整个分区表的数据和单个分区的数据。
c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区
d) 可以倒出统计信息
e) 可以用户自动收集统计信息
4、分区
分区是实现历史数据迁移的最佳方式,当进行数据迁移时,删除操作(时间长,日志大),可以考虑交换技术;
分区的设计与表空间的设计是相关联的;
分区的交换技术(EXCHANGE)非常精彩,是把大量数据中的局部数据拿出来,处理完后再放回去,实际上是修改了数据的指针,所有在大数据量使用分区交换时非常非常的快。
5、日志
INSERT 语句产生的日志最小;
DELETE语句产生的日志最大,并且不真正的释放空间,在一个数据量非常大的表中,执行删除操作实际是非常恐惧的操作;