五.內存使用
充裕的內存可以減少磁盤IO,在數據庫系統中磁盤IO是極其昂貴的開銷。當用戶訪問資料時如果在緩存中能夠找到的話稱之為“邏輯IO“,否則從磁盤讀取稱之為“物理IO“....
五.內存使用
充裕的內存可以減少磁盤IO,在數據庫系統中磁盤IO是極其昂貴的開銷。當用戶訪問資料時如果在緩存中能夠找到的話稱之為“邏輯IO“,否則從磁盤讀取稱之為“物理IO“
內存問題大致是以下幾個方面:
1.總的數據高速緩存太小。
2.過程高速緩存太小。
3.在SMP系統中只配置了缺省高速緩存,導致對高速緩存的爭用。
4.高速緩存大小不適用於特殊的應用。
5.IO大小不適用於特定的應用。
高速緩存分類:
1. 數據高速緩存。用於數據,索引和日志頁
2. 過程高速緩存。用於存儲過程和觸發器以滿足短期內存需求。
確定過程高速緩存的大小可用以下辦法實現:
過程高速緩存大小=最大用戶並發數目*最大的計劃大小*1.25
具體如下:在使用一段時間的服務器上用dbcc traceon(3604)將信息寫到屏幕,然後運行dbcc memusage確定最大的查詢計劃的大小,然後根據應用確定並發用戶數量就可以大約得到高速緩存的大小了。其實在我們的ERP應用中最大的計劃所需內存在450K左右,所以,一般來說,過程高速緩存的大小到100M肯定是夠用的,並且當過程高速緩存不夠時會有701的錯誤發生。
Sybase default只有”default data cache”,並且只有一個2K的緩沖池,對於大多數的情況這都是不適合的,我們需要建立命名高速緩存並將對象綁定到高速緩存。
Sybase支持的緩沖池大小有2K,4K,8K,16K。給tempdb建立單獨的命名高速緩存,並合理分配緩沖池,一般4K的log IO的大小能夠得到比較好的性能。在SMP的環境中還有一個問題就是螺旋鎖的競爭,當用sp_sysmon觀察到資料緩存螺旋鎖爭奪超過10%時就需要分區。