理解SybaseIQ中的內存
1.1.
內存使用對SybaseIQ而言,內存越多越好,一般要求每個服務器的CPU配置內存2GB,數據裝載需要動態使用額外的內存,計算使用緩存caches;降低IO的方法是使用大buffer caches;使用超出內存會導致頻繁swapping;IQ從操作系統申請內存,從操作系統級別看SybaseIQ的內存為堆內存,所有的內存分配自動進行。IQ使用內存進行以下活動:
一個安裝SybaseIQ的數據庫服務器的典型內存分布如圖所示:包括操作系統其他應用程序內存,服務器內存,額外內存,IQ存儲緩存,臨時存儲緩存。

1.1.1.
服務器內存SybaseIQ服務器進程使用的內存,不同的操作系統平臺其使用量存在差異,一般需要30MB。
1.1.2.
額外內存元數據緩存
由數據庫啟動選項 –c, -cl, 和 –ch參數控制使用RAM數量,專門用來作元數據庫讀寫緩存,當數據庫對象較多時,建議調大此數據。
線程內存
線程內存在數據庫啟動時分配給數據庫服務器,用于線程的堆棧空間,總的空間數值按照公式“stack size * IQ 線程數量”計算,數據庫啟動參數–iqtss確定數據庫的stack size大小單位KB。啟動參數-iqmt指定IQ可以使用的線程數量,最小值是2*num_conn+1,缺省值是:
60*numCPU+2*num_conn+1
“活動”用戶內存
每個Sybase IQ 用戶對應一個連接進程,此進程大概需要 10MB空間;活動用戶是指到數據庫的一個連接或執行的查詢命令,連接到數據庫而不活動的用戶需要更少的內存。
表版本內存
表版本內存在SybaseIQ運行時分配,通常這類內存非常小(每個被跟蹤的表版本1KB到3KB),通常為KB到MB,但是當系統中存在成千上萬的表版本時,占用空間會比較大。
數據加載內存
SybaseIQ在進行數據加載時,分配內存提供數據加載性能,通過數據庫選項LOAD_MEMORY_MB設定,缺省情況為0,表示堆內存的分配不受限制,如果數據加載時需要更多內存,可能導致數據加載耗盡虛擬內存,降低數據加載性能,一般建議設定此選項,其配置值可根據加載數據的表寬進行如下計算:
Load_Memory_MB = <表寬字節數> * 10,000 * 45 / 1024 / 1024
以下語句將數據加載內存設置成300MB:
SET OPTION PUBLIC.LOAD_MEMORY_MB = 300
數據庫備份內存
數據庫備份內存的大小與CPU個數、備份的IQ存儲和本地存儲的數據庫空間個數,BLOCK的交錯因子,IQ的BLOCK大小有關系??梢酝ㄟ^如下公式粗略估計:
y = max( 2 * cpu個數, 8 * number_of_main_or_local_dbspaces)
z = (y * 20 ) * ( block factor * block_size )
Z表示的是備份時需要的內存的虛擬估計值,假設如下情況:
dbspaces = 50
block factor = 100
number of cpus = 4
block_size = 8,192
采用上面的公式和算法,數據庫備份時需要的內存總數是:
'y' is max(8, 400) è y=400
'z' is ( 400 * 20 ) * ( 100 * 8,192 ) è 6.5GB
備份內存來自操作系統,屬于堆內存,當備份操作完成后,內存釋放。當空間充足時,唯一可以控制備份內存使用的是塊的交錯因子,在前面的例子中,如果交錯因子變成10, 總的備份內存需求將降低到655MB:
( 400 * 20 ) * ( 10 * 8,192 ) è 655MB
在磁盤I/O不是瓶頸的情況下,在數據庫備份時降低內存將減慢備份數度。數據庫備份性能與磁盤子系統I/O的讀寫塊性能一致,為減少I/O的額外開銷,備份程序一次I/O中讀入連續的塊,相應地按照“塊交錯因子”寫這些塊數據。
通過“塊交錯因子”可以減少備份內存,增加可用的內存,以此計算數據庫備份時需要的總內存量。
1.1.3.
數據庫緩存數據庫緩存是操作系統內存中分配用來保存從數據庫中讀出或者準備寫入數據庫的數據。SybaseIQ數據庫緩存包括主存儲緩存和臨時存儲緩存。參數設置可以通過數據庫選項或者數據庫啟動配置文件。
主存儲緩存
用于緩存數據庫服務器從IQ存儲中讀取的數據,供 IQ 數據表空間的數據緩存使用,所有用戶均可使用。較大的緩存可以降低磁盤的IO以提升性能,主存儲緩存在數據庫啟動時初始化,缺省配置是16MB,對于大多數應用來說太小,修改此參數配置需要重新啟動數據庫。一般將IQ服務器可以使用的內存的40%分配給SybaseIQ主存儲緩存。
臨時存儲緩存
?SybaseIQ臨時存儲緩存用于數據查詢時的表關聯,分組,排序和哈系算法。數據加載時,也需要較多的臨時存儲緩存,例如HG索引的管理、FP索引加載時的1個字節和2個字節的字典表等。較大的臨時存儲緩存可以減少內存調度。
主存儲緩存在數據庫啟動時初始化,缺省配置是12MB,對于大多數應用來說太小,修改此參數配置需要重新啟動數據庫。一般將IQ服務器可以使用的內存的60%分配給SybaseIQ的臨時存儲緩存。
內存使用對SybaseIQ而言,內存越多越好,一般要求每個服務器的CPU配置內存2GB,數據裝載需要動態使用額外的內存,計算使用緩存caches;降低IO的方法是使用大buffer caches;使用超出內存會導致頻繁swapping;IQ從操作系統申請內存,從操作系統級別看SybaseIQ的內存為堆內存,所有的內存分配自動進行。IQ使用內存進行以下活動:
l
從磁盤讀取數據并執行查詢;
l
從系統平面文件加載時緩沖磁盤數據;
l
緩沖元數據文件 (Catalog)
l
管理連接,事務,緩沖區和數據庫對象。
一個安裝SybaseIQ的數據庫服務器的典型內存分布如圖所示:包括操作系統其他應用程序內存,服務器內存,額外內存,IQ存儲緩存,臨時存儲緩存。

1.1.1.
服務器內存SybaseIQ服務器進程使用的內存,不同的操作系統平臺其使用量存在差異,一般需要30MB。
1.1.2.
額外內存元數據緩存
由數據庫啟動選項 –c, -cl, 和 –ch參數控制使用RAM數量,專門用來作元數據庫讀寫緩存,當數據庫對象較多時,建議調大此數據。
線程內存
線程內存在數據庫啟動時分配給數據庫服務器,用于線程的堆棧空間,總的空間數值按照公式“stack size * IQ 線程數量”計算,數據庫啟動參數–iqtss確定數據庫的stack size大小單位KB。啟動參數-iqmt指定IQ可以使用的線程數量,最小值是2*num_conn+1,缺省值是:
60*numCPU+2*num_conn+1
“活動”用戶內存
每個Sybase IQ 用戶對應一個連接進程,此進程大概需要 10MB空間;活動用戶是指到數據庫的一個連接或執行的查詢命令,連接到數據庫而不活動的用戶需要更少的內存。
表版本內存
表版本內存在SybaseIQ運行時分配,通常這類內存非常小(每個被跟蹤的表版本1KB到3KB),通常為KB到MB,但是當系統中存在成千上萬的表版本時,占用空間會比較大。
數據加載內存
SybaseIQ在進行數據加載時,分配內存提供數據加載性能,通過數據庫選項LOAD_MEMORY_MB設定,缺省情況為0,表示堆內存的分配不受限制,如果數據加載時需要更多內存,可能導致數據加載耗盡虛擬內存,降低數據加載性能,一般建議設定此選項,其配置值可根據加載數據的表寬進行如下計算:
Load_Memory_MB = <表寬字節數> * 10,000 * 45 / 1024 / 1024
以下語句將數據加載內存設置成300MB:
SET OPTION PUBLIC.LOAD_MEMORY_MB = 300
數據庫備份內存
數據庫備份內存的大小與CPU個數、備份的IQ存儲和本地存儲的數據庫空間個數,BLOCK的交錯因子,IQ的BLOCK大小有關系??梢酝ㄟ^如下公式粗略估計:
y = max( 2 * cpu個數, 8 * number_of_main_or_local_dbspaces)
z = (y * 20 ) * ( block factor * block_size )
Z表示的是備份時需要的內存的虛擬估計值,假設如下情況:
dbspaces = 50
block factor = 100
number of cpus = 4
block_size = 8,192
采用上面的公式和算法,數據庫備份時需要的內存總數是:
'y' is max(8, 400) è y=400
'z' is ( 400 * 20 ) * ( 100 * 8,192 ) è 6.5GB
備份內存來自操作系統,屬于堆內存,當備份操作完成后,內存釋放。當空間充足時,唯一可以控制備份內存使用的是塊的交錯因子,在前面的例子中,如果交錯因子變成10, 總的備份內存需求將降低到655MB:
( 400 * 20 ) * ( 10 * 8,192 ) è 655MB
在磁盤I/O不是瓶頸的情況下,在數據庫備份時降低內存將減慢備份數度。數據庫備份性能與磁盤子系統I/O的讀寫塊性能一致,為減少I/O的額外開銷,備份程序一次I/O中讀入連續的塊,相應地按照“塊交錯因子”寫這些塊數據。
通過“塊交錯因子”可以減少備份內存,增加可用的內存,以此計算數據庫備份時需要的總內存量。
1.1.3.
數據庫緩存數據庫緩存是操作系統內存中分配用來保存從數據庫中讀出或者準備寫入數據庫的數據。SybaseIQ數據庫緩存包括主存儲緩存和臨時存儲緩存。參數設置可以通過數據庫選項或者數據庫啟動配置文件。
主存儲緩存
用于緩存數據庫服務器從IQ存儲中讀取的數據,供 IQ 數據表空間的數據緩存使用,所有用戶均可使用。較大的緩存可以降低磁盤的IO以提升性能,主存儲緩存在數據庫啟動時初始化,缺省配置是16MB,對于大多數應用來說太小,修改此參數配置需要重新啟動數據庫。一般將IQ服務器可以使用的內存的40%分配給SybaseIQ主存儲緩存。
臨時存儲緩存
?SybaseIQ臨時存儲緩存用于數據查詢時的表關聯,分組,排序和哈系算法。數據加載時,也需要較多的臨時存儲緩存,例如HG索引的管理、FP索引加載時的1個字節和2個字節的字典表等。較大的臨時存儲緩存可以減少內存調度。
主存儲緩存在數據庫啟動時初始化,缺省配置是12MB,對于大多數應用來說太小,修改此參數配置需要重新啟動數據庫。一般將IQ服務器可以使用的內存的60%分配給SybaseIQ的臨時存儲緩存。
posted on 2007-11-10 17:33 風 閱讀(1773) 評論(0) 編輯 收藏 所屬分類: SybaseIQ 、數據倉庫