close

本攻略一概不說明為什麼,只讓你怎麼做!

1、優化應用程序,創建合理的索引

這個應該不算“數據庫”方面的性能調整,確切說應該屬於“算法的優化”,可參考算法優化方面的文章!

2、數據Extent分開存放,就是所謂的異步IO
包括硬件層次的陣列,操作系統層次的Raid0,或者數據庫Extent存放在不同的物理硬盤,都算!
實際上使用時可能出現的情況很多,需要具體問題具體分析。

//以上2點,當我沒說;另外,以下說明均基於操作系統環境:HP-UX11i

3、設置數據庫的Block Size為8KB

①Block size必須是2的整數倍,一般是1024 / 2048 / 4096 / 8192中選一個,原則是OS File System Block Size的1-2倍。查看FS的Block Size可以用:
# fstyp -v /dev/vg01/mfg 
# df -g 
注意:for vxfs filesystems the 'f_bsize' parameter shows the maximum block size, while the 'f_frsize' parameter shows the actual block size. ///懶得翻譯了,別告訴我這句英語你看不懂。

②通常HP-UX環境下文件系統(FS)默認block size具有如下的對應關係:
FS size 1024 Kb 
FS size > 8 & 2048 Kb 
FS size > 16 & 4096 Kb 
FS size > 32 GB --->8192 Kb 
可以通過newfs命令加-b參數來指定文件系統的block size,比如:
# newfs -F vxfs -b 2048 /dev/ VG_NAME/rLV_NAME

③數據庫的Block Size只能在創建數據庫時指定,例:
# /mfg/dlc91/bin/prostrct create prod prod.st -blocksize 8192

· 關於怎麼查看Block Size(可以在線運行):
# /mfg/dlc91/bin/promon prod 
選擇7,可以看到Database Block Size,BI Cluster Size和BI Block Size等。

4、設置BI Cluster Size為16M
增大BI Cluster Size時,一個要考慮的是你的硬盤空間是否足夠(通常不是問題就是了)!
關閉數據庫,執行:
# /mfg/dlc91/bin/proutil prod -C truncate bi -bi 16384 
其中,16384就是BI Cluster Size,單位是K!必須是16 * (2的N次方):16 - 262128,就是16K到256M,通常設置512-16384,默認是512。

5、設置BI Block Size為8K
跟DB的BlockSize是一樣的道理,如何設置?關閉數據庫服務,輸入如下命令:
# /mfg/dlc91/bin/proutil prod -C truncate bi -biblocksize size 
其中size可以是0 , 1 , 2 , 4 , 8,單位是KB.

6、設置AI Block Size = BI Block Size

7、Set -bibufs to 25
-bibufs也是一個數據庫啟動參數,設置BI的Buffer Cache,適當加大有助於提高BI的IO性能,但是要佔用內存,佔用內存數=bibufs * BI Block Size 
所以適當增加即可,建議25,如果內存夠大,那麼根據如下原則增大:
查看數據庫的BI Log Activity,如果Empty Buffer waits不為0,就加大該值。

8、Run BIW if use.
///說實在,沒啥必要,數據庫性能如果很差,分析原因再怎麼輪也輪不到這個,同理AIW!

9、Run AIW if use.
///同BIW

10、Run at least one APW. 
# /mfg/dlc91/bin/proapw prod 
注意每開啟一個APW佔用一個-n的users資源,但是APW不計License,所以可以根據APW數,增加-n啟動參數的值。

11、多處理器時注意合理設置-spin參數
官方建議值是CPU個數* 2000或者4000或者6000,各種說法都有,個人建議:
從0開始,每次加1000這樣調試,直到獲取最好性能。我覺得這個值肯定沒有一個固定的範圍,有時可能很大比如200萬。
這個參數在數據庫啟動裡面設,跟-B -L什麼的類似,也可以在線修改:
promon數據庫然後輸入R&D,選擇4修改參數,再選擇4!

12、BI 和DB分開存放

說明:理論上可以,但經實際測試分析,這點小伎倆對DB性能提升幾乎發揮不了什麼作用:p

13、AI extents的處理 
//同12點

14、盡量避免使用Raid5模式

說明:建議使用類似Raid0+1的模式,不用Raid5!

15、別同時運行其它重量級的服務

說明:從經濟角度出發,很能會讓一台服務器運行多種服務,比如郵件、WEB等,但是建議不要,僅僅是建議!

16、偽交換區的影響

說明:swapmem_on=1時,開啟偽交換區,但是在某些情況 ​​下會對應用程序性能造成很大的下降!
在HP-UX環境下查看是否開啟偽交換可以用這個命令:
# sysdef|grep "mem_on" 
解決辦法:設置swapmem_on=0(注意OS需要重啟)
注意:不要隨意更改swapmen_on=0,對於大內存而交換區相對設置比較小的狀況下,需要聯繫root或者諮詢HP-UX方面的專家,以確定是否可以修改!

·如果不懂得如何修改HP-UX的內核參數,建議參加HP-UX的基礎研修,否則你作為DB的管理員將讓人很不放心!

17、增大數據庫的Buffer Cache

數據庫的-B啟動參數,指定了數據庫的Buffer Cache的大小,最大是500000,佔用內存數計算方法:
Buffer Cache = n * DB Block Size,所以當DB Block Size是8K時,Buffer Cache最大可以設置到4GB。
原則上Buffer Cache越大越好(跟文件系統的Buffer Cache不一樣),但是需要考慮可用物理內存的限定!
關於如何增加可用物理內存(不買硬件),通常會讓很多管理員忽視的一個,就是文件系統開的Buffer Cache過大,不但沒用而且浪費物理內存。你可以先看看:
# sysdef |grep "dbc_max_pct" 
這個內核參數指定了文件系統Buffer Cache的最大值,就是物理內存* ( dbc_max_pct / 100),HP-UX11i以上默認dbc_max_pct是50,也就是物理內存一半......實際上,文件系統Buffer Cache不是越大越好,經驗值是300-500M之間,再大了反而降低性能。所以,你一定要調整這個值,使得文件系統的Buffer在300-500M之間!這樣做以後,你的可用物理內存通常能增加30%-40%!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dwanue 的頭像
    dwanue

    dwanue IT Life

    dwanue 發表在 痞客邦 留言(0) 人氣()