正在看的ORACLE教程是:Oracle效能究極最佳化。 增大 SGA 已經緩衝看來對於效能的提升並不顯著,載入時間只提升了 1.73%。下面我們增加 SGA 重做日誌的大小:
DB3: Log Buffer
Database Block Size 2K
SGA Buffer Cache 128M
SGA Shared Pool 128M
SGA Redo Cache 16M
Redo Log Files 16M
Tablespaces Dictionary
TPC Results Load Time (Seconds) 41.39
Transactions / Second 10.088
我們可以看到載入時間提升了 17.35%,TPS 也提升了 9.33%。因為載入和同時插入,更新,刪除需要比 8M 大的空間,但是看起來增加記憶體效能並沒有顯著提升,我們加大塊大小:
DB4: 4K Block
Database Block Size 4K
SGA Buffer Cache 128M
SGA Shared Pool 128M
SGA Redo Cache 16M
Redo Log Files 16M
Tablespaces Dictionary
TPC Results Load Time (Seconds) 17.35
Transactions / Second 10.179
我們看到載入時間提升了 138%!而對 TPS 值沒有很大的影響。下面一個簡單的念頭是資料表空間的管理從目錄切換為本地:
DB5: Local Tablespaces
Database Block Size 4K
SGA Buffer Cache 128M
SGA Shared Pool 128M
SGA Redo Cache 16M
Redo Log Files 16M
Tablespaces Local
TPC Results Load Time (Seconds) 15.07
Transactions / Second 10.425
下面我們把資料庫塊加大到 8K 來看結果:
DB6: 8K Block
Database Block Size 8K
SGA Buffer Cache 128M
SGA Shared Pool 128M
SGA Redo Cache 16M
Redo Log Files 16M
Tablespaces Local
TPC Results Load Time (Seconds) 11.42
Transactions / Second 10.683
看來結果並不壞,我們沒有理由繼續增加塊大小了,我們還沒有根據 CPU 個數調整相應的參數,這次我們設定 I/O 的進程數來繼續調整:
DB7: I/O Slaves
Database Block Size 8K
SGA Buffer Cache 128M
SGA Shared Pool 128M
SGA Redo Cache 16M
Redo Log Files 16M
Tablespaces Local
dbwr_io_slaves 4
lgwr_io_slaves (derived) 4
TPC Results
Load Time (Seconds) 10.48
Transactions / Second 10.717
我們的測試是基於 Red Hat 6.2 進行的,核心版本為 2.2.14-5 smp。對於 Linux 的核心而言,有將近幾百個參數可以調整,包括對 CPU 類型,SMP 支援,APIC 支援,DMA 支援,IDE DMA 預設參數的使用以磁碟限額支援。根據 Oracle 的文檔,我們要做的主要調整是共用記憶體和訊號量的大小,SHMMAX 最少配置 0x13000000,SEMMNI, SEMMSL 和 SEMOPN 分別至少設定 100, 512, 100。這些參數的設定可以通過下面的命令實現:
# echo 0x13000000 >/proc/sys/kernel/shmmax
# echo 512 32000 100 100 >/proc/sys/kernel/sem
OS1: 單核心和 IPC
TPC Results
Load Time (Seconds) 9.54
Transactions / Second 11.511