我們知道,數據庫是與操作系統緊密相關的軟件,所以很多數據庫功能的實現均需要操作系統支持,尤其是現在主流數據庫都在運行中創建大容量的緩沖內存,提供數據庫的查詢或操作的命中率,那么操作系統的內存無疑是一個很大的瓶頸,在此我們更多的是討論,在主流的unix平臺系統中主要是hp-ux和solaris安裝數據庫需要設置的共享內存的內核參數問題,適用于所有的RDBMS數據庫。
基本參數介紹:
shared memory:共享內存段:
一個內存區域,可以被不同的進程讀取。
1. 使用單個共享內存段。
2. 使用連續多個共享內存段。
3. 使用多個不連續共享內存段。
database優先使用的一種方法,如果成功,則繼續初始化,不成功則使用第二種方法,再不成功則使用第三種方法。如果再不成功,則初始化失敗,database報告錯誤代碼。
Semaphore:
可以看作一個標記??梢杂蠴n和Off兩種狀態。database使用semaphores來實現服務器進程對共享緩沖內存的存取控制。
Shared memory 和semaphore 是database在Unix上運行的重要資源。如果database實例得不到所需要的資源,實例啟動就會失敗。
其細化具體參數項的含義和字段解釋如下:
shmmax
含義:這個設置并不決定究竟database數據庫或者操作系統使用多少物理內存,只決定了最多可以使用的內存數目。這個設置也不影響操作系統的內核資源。
設置方法:通常保證0.5*物理內存,各unix平臺的參數名稱:
solaris:shminfo_shmmax
[size=3] [size=2]HP-UX[/size]:shnmax[/size]
shmmin
含義:共享內存的最小大小。
設置方法:一般都設置成為1。
shmmni
含義:系統中共享內存段的最大個數。
solaris : shminfo_shmmin
HP-UX:shmmin
shmseg
含義:每個用戶進程可以使用的最多的共享內存段的數目。
solaris:shminfo_shmseg
HP-UX:shmseg
semmni
含義:系統中semaphore identifierer的最大個數。
設置方法:把這個變量的值設置為這個系統上的所有database的實例的相關processes的那個值加10。
solaris: seminfo_semmni
HP-UX:semni (等于nproc)
semmns
含義:系統中emaphores的最大個數。
設置方法:這個值可以通過以下方式計算得到:各個database實例的的processes的值的總和(除去最大的 Processes參數)+最大的那個Processes×2+10×database processes的個數。
solaris:seminfo_semmns
HP-UX:semmns
semmsl:
含義:一個set中semaphore的最大個數。
設置方法:設置成為10+所有database最大的Processes的值。
solaris:seminfo_semmsl
HP-UX:semmsl
至于具體的修改在solaris一般修改/etc/system文件,solaris 10版本或以上動態修改projmod,HP-UX可以通過/usr/sbin/kcweb -F[font=宋體][size=10.5pt]命令修改,也可以通過sam修改,但是修改后請記住需要重啟系統以讓修改生效。[/size][/font]
新聞熱點
疑難解答