提高ORACLE數(shù)據(jù)庫的查詢統(tǒng)計速度
2024-08-29 13:28:50
供稿:網(wǎng)友
 
大型數(shù)據(jù)庫系統(tǒng)中往往要用到查詢統(tǒng)計,但是對于數(shù)據(jù)量大的系統(tǒng),用戶在進行復雜的查詢統(tǒng)計時往往感到速度很慢,不能滿足應用要求,這就要求我們在設計數(shù)據(jù)庫系統(tǒng)時進行合理設置,提高查詢統(tǒng)計的速度。本文結(jié)合筆者的項目開發(fā)經(jīng)驗,闡述具體的設置方法。 以oracle7.33數(shù)據(jù)庫系統(tǒng)為例,我們在開發(fā)大型oracle數(shù)據(jù)庫系統(tǒng)時結(jié)合項目的特點,本著安全、高效的原則對數(shù)據(jù)庫進行了一些物理設計,從而大大提高了數(shù)據(jù)庫的查詢統(tǒng)計速度。總結(jié)為如下幾點:   1)擴大數(shù)據(jù)表空間到500m,用于存放本系統(tǒng)的數(shù)據(jù);      2)段盤區(qū)的初始大小為10k,增長大小為10k,增長幅度為1;      3)用戶臨時空間增大40m;      4)系統(tǒng)臨時表空間和回滾段表空間增大40m,并且新建4個回滾段;      5)需要經(jīng)常聯(lián)結(jié)查詢,而且數(shù)據(jù)量又大的庫存表、名錄表、收發(fā)料表放在一簇內(nèi);      6)提供定時備份,備份文件放在另外的機器上。      設置數(shù)據(jù)表空間的sql語句如下:      create tablespace wxgl_data1 datafile 'wxgl_data1.ora' size 500m online;        增加系統(tǒng)臨時表空間和回滾段表空間的sql語句如下:      alter tablespace temporary_data add datafile 'tmp2orcl.ora' size 40m;   alter tablespace rollback_data add datafile 'rbs2orcl.ora' size 40m;        將數(shù)據(jù)空間設置在指定的數(shù)據(jù)文件的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.將數(shù)據(jù)量大的庫存表等放在一簇內(nèi)的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 ' ;(大數(shù)據(jù)量的庫存表等放在wxgl_data1)   qcfl = 'create table qc_qcfl '    + '(flbh number(2) primary key,'    + ' flmc varchar(20) '    + ' ) '    +' tablespace wxgl_data2 ' ;(其他表放在wxgl_data2)