熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

如何提高ORACLE數據庫的查詢統計速度

2013-11-13 22:23:44  來源: Oracle 

  大型數據庫系統中往往要用到查詢統計但是對於數據量大的系統用戶在進行復雜的查詢統計時往往感到速度很慢不能滿足應用要求這就要求我們在設計數據庫系統時進行合理設置提高查詢統計的速度本文結合筆者的項目開發經驗闡述具體的設置方法

  以oracle數據庫系統為例我們在開發大型oracle數據庫系統時結合項目的特點本著安全高效的原則對數據庫進行了一些物理設計從而大大提高了數據庫的查詢統計速度總結為如下幾點

  )擴大數據表空間到M用於存放本系統的數據;

  )段盤區的初始大小為K增長大小為K增長幅度為;

  )用戶臨時空間增大M;

  )系統臨時表空間和回滾段表空間增大M並且新建個回滾段;

  )需要經常聯結查詢而且數據量又大的庫存表名錄表收發料表放在一簇內;

  )提供定時備份備份文件放在另外的機器上

  設置數據表空間的SQL語句如下

  
  CREATE TABLESPACE WXGL_DATA DATAFILE WXGL_DATAORA SIZE M ONLINE;

  增加系統臨時表空間和回滾段表空間的SQL語句如下

  
  ALTER TABLESPACE TEMPORARY_DATA ADD DATAFILE TMPORCLORA SIZE M;
  ALTER TABLESPACE ROLLBACK_DATA ADD DATAFILE RBSORCLORA SIZE M;

  將數據空間設置在指定的數據文件的SQL語句如下

  
  CREATE USER ZBGL IDENTIFIED BY ZBGL;
  GRANT DBA TO ZBGL;
  ALTER USER ZBGL DEFAULT TABLESPACE WXGL_DATA TEMPORARY TABLESPACE TEMPORARY_DATA;  設置五個回滾段的SQL語句如下
  SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS WHERE INITIAL_EXTENT <  AND
  UPPPER(OWNER) = PUBLIC;
  SELECT UPPER(STATUS) FROM DBA_ROLLBACK_SEGS WHERE UPPER(SEGMENT_NAME) = 
  ALTER ROLLBACK SEGMENT RB OFFLINE;
  ALTER ROLLBACK SEGMENT RB OFFLINE;
  ALTER ROLLBACK SEGMENT RB OFFLINE;
  ALTER ROLLBACK SEGMENT RB OFFLINE;
  ALTER ROLLBACK SEGMENT RB OFFLINE;
  DROP ROLLBACK SEGMENT RB;
  DROP ROLLBACK SEGMENT RB;

  
  DROP ROLLBACK SEGMENT RB;
  DROP ROLLBACK SEGMENT RB;
  DROP ROLLBACK SEGMENT RB;
  CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA
  STORAGE (INITIAL  NEXT  MAXEXTENTS );
  CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA
  STORAGE (INITIAL  NEXT  MAXEXTENTS );
  CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA
  STORAGE (INITIAL  NEXT  MAXEXTENTS );
  CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA
  STORAGE (INITIAL  NEXT  MAXEXTENTS );
  CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA
  STORAGE (INITIAL  NEXT  MAXEXTENTS );
  ALTER ROLLBACK SEGMENT RB ONLINE;
  ALTER ROLLBACK SEGMENT RB ONLINE;
  ALTER ROLLBACK SEGMENT RB ONLINE;
  ALTER ROLLBACK SEGMENT RB ONLINE;
  ALTER ROLLBACK SEGMENT RB ONLINE;
  COMMIT;

  將數據量大的庫存表等放在一簇內的SQL語句如下

  
  KCB=CREATE TABLE QC_KCB( 
  + CKNM NUMBER(
  + QCNM NUMBER(
  + CKKC NUMBER()
  + SNCKKC NUMBER()
  + LDJ NUMBER()
  + BZ VARCHAR()
  + PRIMARY KEY(CKNMQCNM))
  + TABLESPACE WXGL_DATA  ;(大數據量的庫存表等放在WXGL_DATA)
  QCFL = CREATE TABLE QC_QCFL 
  + (FLBH NUMBER() PRIMARY KEY
  +  FLMC VARCHAR(
  +  ) 
  + TABLESPACE WXGL_DATA  ;(其他表放在WXGL_DATA


From:http://tw.wingwit.com/Article/program/Oracle/201311/18984.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.