ORACLE性能优化思路总结,抛砖引玉

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

你可能感兴趣的:(数据库开发)