提高ORACLE数据库的查询统计速度
2020-03-09 22:55:40
供稿:网友
大型数据库系统中往往要用到查询统计,但是对于数据量大的系统,用户在进行复杂的查询统计时往往感到速度很慢,不能满足应用要求,这就要求我们在设计数据库系统时进行合理设置,提高查询统计的速度。本文结合笔者的项目开发经验,阐述具体的设置方法。 以oracle7.33数据库系统为例,我们在开发大型oracle数据库系统时结合项目的特点,本着安全、高效的原则对数据库进行了一些物理设计,从而大大提高了数据库的查询统计速度。总结为如下几点: 1)扩大数据表空间到500m,用于存放本系统的数据; 2)段盘区的初始大小为10k,增长大小为10k,增长幅度为1; 3)用户临时空间增大40m; 4)系统临时表空间和回滚段表空间增大40m,并且新建4个回滚段; 5)需要经常联结查询,而且数据量又大的库存表、名录表、收发料表放在一簇内; 6)提供定时备份,备份文件放在另外的机器上。 设置数据表空间的sql语句如下: create tablespace wxgl_data1 datafile 'wxgl_data1.ora' size 500m online; 增加系统临时表空间和回滚段表空间的sql语句如下: alter tablespace temporary_data add datafile 'tmp2orcl.ora' size 40m; alter tablespace rollback_data add datafile 'rbs2orcl.ora' size 40m; 将数据空间设置在指定的数据文件的sql语句如下: create user zbgl identified by zbgl; grant dba to zbgl; alter user zbgl default tablespace wxgl_data1 temporary tablespace temporary_data;
1. 设置五个回滚段的sql语句如下: select segment_name from dba_rollback_segs where initial_extent < 512000 and uppper(owner) = 'public'; select upper(status) from dba_rollback_segs where upper(segment_name) = '' alter rollback segment rb1 offline; alter rollback segment rb2 offline; alter rollback segment rb3 offline; alter rollback segment rb4 offline; alter rollback segment rb5 offline; drop rollback segment rb1; drop rollback segment rb2; drop rollback segment rb3; drop rollback segment rb4; drop rollback segment rb5; create public rollback segment rb1 tablespace rollback_data storage (initial 512000 next 512000 maxextents 121); create public rollback segment rb2 tablespace rollback_data storage (initial 512000 next 512000 maxextents 121); create public rollback segment rb3 tablespace rollback_data storage (initial 512000 next 512000 maxextents 121); create public rollback segment rb4 tablespace rollback_data storage (initial 512000 next 512000 maxextents 121); create public rollback segment rb5 tablespace rollback_data storage (initial 512000 next 512000 maxextents 121); alter rollback segment rb1 online; alter rollback segment rb2 online; alter rollback segment rb3 online; alter rollback segment rb4 online; alter rollback segment rb5 online; commit; 2.将数据量大的库存表等放在一簇内的sql语句如下: kcb='create table qc_kcb( ' +' cknm number(8) ,' +' qcnm number(10) ,' +' ckkc number(12,2),' +' snckkc number(12,2),' +' ldj number(12,2),' +' bz varchar(100),' +' primary key(cknm,qcnm))' +' tablespace wxgl_data1 ' ;(大数据量的库存表等放在wxgl_data1) qcfl = 'create table qc_qcfl ' + '(flbh number(2) primary key,' + ' flmc varchar(20) ' + ' ) ' +' tablespace wxgl_data2 ' ;(其他表放在wxgl_data2)