ORACLE性能优化思路总结:
一、索引
适用及原则:表记录量在3000以上,记录小没有意义
建索引的列为关联比较频繁的列,比如志愿表的报名号,
建索引的列没有空值
建索引的列值基本固定不会修改,否则效率会打折扣,需要做定期重建索引
建了索引会影响对该表的新增和修改的效率,如果可能,生产阶段不建,查询阶段建
--示例:志愿主表索引,志愿完成后创建
create index IDX_RECRUIT_STUWISH_MAIN_2 on RECRUIT_STUWISH_MAIN (examid);
create index IDX_RECRUIT_STUWISH_MAIN_3 on RECRUIT_STUWISH_MAIN (code_student);
create index IDX_RECRUIT_STUWISH_MAIN_4 on RECRUIT_STUWISH_MAIN (signcode);
二、语句写法及程序实现
弄清表结构及关系,SQL少走弯路
外部程序能获取传入的不要再重复到数据库去查
外部程序少做重复劳动,能复用的利用,不是复用方法,是复用数据,一个流程内一个数据只查一次,减少与数据库的交互次数
外部程序使用缓存,减少与数据库的交互
如果可以,尽量利用应用服务器实现业务逻辑,减少数据库服务器的负担
三、根据业务规则减少数据量
物理减少:历史数据迁移
逻辑减少:将普通表改造成分区表,按规则分区,建分区索引
create table tablename
(
CODE_STUDENT VARCHAR2(20) not null,
EXAMID VARCHAR2(8) not null,
SIGNCODE VARCHAR2(20),
CODE_GRADE_EXAM VARCHAR2(2)
)
partition by list (EXAMID)
(
partition P1 values ('14420101', '14420102‘),
partition P2 values (‘14420201’, ‘14420202’),
partition P0 values (default)
);
四、运维层面优化
增强硬件配置,CPU、内存、存储(磁盘阵列,减少磁盘IO)
双机同步,读写分离
部署ORACLE集群,实现高可用,如RAC