程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle性能調整中的相關要點的介紹

Oracle性能調整中的相關要點的介紹

編輯:Oracle數據庫基礎

以下的文章主要是介紹Oracle性能調整中的相關要點的應用以及優化,如果你在Oracle性能調整中的相關要點的應用方面有想了解的欲望,以下的文章就是滿足你對Oracle性能調整中相關要點的知識的概要。

1、概念

為了提高性能,可以使用下列數據訪問方法:

  1. A、Clusters  
  2. B、Indexes  
  3. B-tree(normal or reverse key)  
  4. bitmap  
  5. -function-based  
  6. C、Index-organized tables  
  7. D、Materialized vIEws 

索引的層次越多,效率越低,如果索引中含有許多已刪除的行,這個索引也會變得低效,如果索引數據的15%已經被刪除,應該考慮重建索引。

2、應用問題

A、使用可聲明的約束而不是通過代碼限制

B、代碼共享

C、使用綁定變量而不是文字來優化共享sql

D、調整cursor_sharing的值(EXACT/SIMILAR/FORCE)

  1. A、Clusters   
  2. B、Indexes   
  3. -B-tree(normal or reverse key)   
  4. -bitmap   
  5. -function-based   
  6. C、Index-organized tables   
  7. D、Materialized vIEws  

1、避免動態分配的缺陷

創建本地管理的表空間;

合理設置segment的大小;

監控將要擴展的segment:

  1. SELECT owner, table_name, blocks, 
    empty_blocks FROM dba_tables WHERE empty_blocks / 
    (blocks+empty_blocks) < .1

2、high water mark

記錄在segment header block中,在segment創建的時候設定在segment的起始位置,當記錄被插入的時候以5個block的增量增加,truncate可以重設high water mark的位置,但delete不能。

在full table scan中,oracle會讀取high water mark以下的所有的數據塊,所以high water mark以上的塊也許會浪費存儲空間,但不會降低Oracle性能。

可以通過下列方法收回表中high water mark以上的塊:

  1. Alter table_name deallocate unused; 

對於high water mark以下的塊:

使用import/export工具:export數據;drop或truncate表;import數據。或者利用alter table tanle_name move命令去移動表的存儲位置(此時需要重建索引)。

3、表統計

用analyize命令生成表統計,然後到dba_table查詢相關信息。

  1. ANALYZE TABLE ndls.t_wh_shipping_bill COMPUTE STATISTICS;  
  2. SELECT num_rows, blocks, empty_blocks as empty,avg_space, 
    chain_cnt, avg_row_len FROM dba_tables WHERE owner
     =
    'NDLS' AND table_name='T_WH_SHIPPING_BILL';  
  3. Columns Description   
  4. NUM_ROWS Number of rows in the table   
  5. BLOCKS Number of blocks below the table high-water mark   
  6. EMPTY_BLOCKS Number of blocks above the table high-water mark   
  7. AVG_SPACE Average free space in bytes in the blocks below 
    high-water mark  
  8. AVG_ROW_LEN Average row length, including row overhead   
  9. CHAIN_CNT Number of chained or migrated rows in the table  
  10. block size  

通過下列方法可以最小化block的訪問次數:

使用更大的block size;緊密壓縮行;阻止行鏡像。後兩者存在沖突,越多的行被壓縮在一個block裡,越容易產生鏡像。Block size 在數據庫創建的時候設定,不能被輕易改變,是讀取數據文件時最小的IO單元,大小范圍是2K-64K,應該設置成OS塊的整數倍,小於或等於OS IO時能讀取的存儲區域。

較小的block size的優點:極少block競爭;有利於較小的行和隨機訪問。缺點是存在相當高的成本,每個block的行數更少,可能需要讀取更多的index塊。Block size的選擇影響系統的Oracle性能,在一個OLTP環境中,較小的block size更合適,而在DSS環境中,適宜選擇較大的block size。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved