提高ORACLE數(shù)據(jù)庫(kù)的查詢統(tǒng)計(jì)速度
大型數(shù)據(jù)庫(kù)系統(tǒng)中往往要用到查詢統(tǒng)計(jì),但是對(duì)于數(shù)據(jù)量大的系統(tǒng),用戶在進(jìn)行復(fù)雜的查詢統(tǒng)計(jì)時(shí)往往感到速度很慢,不能滿足應(yīng)用要求,這就要求我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)時(shí)進(jìn)行合理設(shè)置,提高查詢統(tǒng)計(jì)的速度。本文結(jié)合筆者的項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),闡述具體的設(shè)置方法。
以oracle7.33數(shù)據(jù)庫(kù)系統(tǒng)為例,我們?cè)陂_(kāi)發(fā)大型oracle數(shù)據(jù)庫(kù)系統(tǒng)時(shí)結(jié)合項(xiàng)目的特點(diǎn),本著安全、高效的原則對(duì)數(shù)據(jù)庫(kù)進(jìn)行了一些物理設(shè)計(jì),從而大大提高了數(shù)據(jù)庫(kù)的查詢統(tǒng)計(jì)速度。總結(jié)為如下幾點(diǎn):
1)擴(kuò)大數(shù)據(jù)表空間到500M,用于存放本系統(tǒng)的數(shù)據(jù);
2)段盤區(qū)的初始大小為10K,增長(zhǎng)大小為10K,增長(zhǎng)幅度為1;
3)用戶臨時(shí)空間增大40M;
4)系統(tǒng)臨時(shí)表空間和回滾段表空間增大40M,并且新建4個(gè)回滾段;
5)需要經(jīng)常聯(lián)結(jié)查詢,而且數(shù)據(jù)量又大的庫(kù)存表、名錄表、收發(fā)料表放在一簇內(nèi);
6)提供定時(shí)備份,備份文件放在另外的機(jī)器上。
設(shè)置數(shù)據(jù)表空間的SQL語(yǔ)句如下:
CREATE TABLESPACE WXGL_DATA1 DATAFILE "WXGL_DATA1.ORA" SIZE 500M ONLINE;
增加系統(tǒng)臨時(shí)表空間和回滾段表空間的SQL語(yǔ)句如下:
ALTER TABLESPACE TEMPORARY_DATA ADD DATAFILE "TMP2ORCL.ORA" SIZE 40M;
ALTER TABLESPACE ROLLBACK_DATA ADD DATAFILE "RBS2ORCL.ORA" SIZE 40M;
將數(shù)據(jù)空間設(shè)置在指定的數(shù)據(jù)文件的SQL語(yǔ)句如下:
CREATE USER ZBGL IDENTIFIED BY ZBGL;
GRANT DBA TO ZBGL;
ALTER USER ZBGL DEFAULT TABLESPACE WXGL_DATA1 TEMPORARY TABLESPACE TEMPORARY_DATA;
將數(shù)據(jù)量大的庫(kù)存表等放在一簇內(nèi)的SQL語(yǔ)句如下:
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ù)量的庫(kù)存表等放在WXGL_DATA1)
QCFL = "CREATE TABLE QC_QCFL "
+ "(FLBH NUMBER(2) PRIMARY KEY,"
+ " FLMC VARCHAR(20) "
+ " ) "
+" TABLESPACE WXGL_DATA2 " ;(其他表放在WXGL_DATA2)