小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Informix 數(shù)據(jù)庫優(yōu)化...

 昵稱90415 2009-02-24

Informix 數(shù)據(jù)庫優(yōu)化

作者:www.kecourser.com  出處:www.kecourser.com  更新時間: 2007年04月03日 

Informix IDS 數(shù)據(jù)庫廣泛的應(yīng)用在金融、電信和郵政等各個行業(yè)中,它是一個多線程的關(guān)系數(shù)據(jù)庫服務(wù)器,采用對稱的多處理器技術(shù)和單處理器體系結(jié)構(gòu),并具有先進的技術(shù)、性能與高可靠性和高可用性。它為用戶提供了動態(tài)系統(tǒng)管理工具來監(jiān)控和管理數(shù)據(jù)庫服務(wù)器。隨著數(shù)據(jù)庫數(shù)量的增加和應(yīng)用處理交易量的增多,它的運行效率顯得尤為突出。在硬件環(huán)境不變的情況下,數(shù)據(jù)庫性能的提高也一直成為大家關(guān)注的話題。 

  數(shù)據(jù)庫系統(tǒng)性能通常與 CPU、共享內(nèi)存、數(shù)據(jù)的存儲和網(wǎng)絡(luò)設(shè)置等四個方面有直接的關(guān)系。下面著重介紹通過配置 Informix IDS 參數(shù)和監(jiān)控 Informix IDS 運行效率,來提高數(shù)據(jù)庫的性能。 

虛擬處理器參數(shù)的調(diào)整和監(jiān)控 

  Informix IDS 對于虛擬處理器的分類,達到了十多種,每個虛擬處理器像操作系統(tǒng)的一個 CPU 允許多個進程服務(wù)于多個用戶一樣,也可以運行多個線程來為多個 SQL 客戶機應(yīng)用程序提供服務(wù)。其中最重要的虛擬處理器是 CPU、AIO、網(wǎng)絡(luò)處理器三種,在這三種服務(wù)器中,CPU 虛擬處理器(CPU VP)是最重要的,它驅(qū)動其他虛擬處理器,如磁盤 I/O 虛擬處理器(AIO VP)和 IDS 會話中的所有線程。AIO VP 的功能是在 SQL 語句訪問或更新數(shù)據(jù)庫數(shù)據(jù)時,執(zhí)行磁盤 I/O。網(wǎng)絡(luò)處理器涉及到數(shù)據(jù)庫服務(wù)器的客戶機或用戶連接??梢赃M行兩種類型的連接:共享內(nèi)存連接和網(wǎng)絡(luò)連接。下面分別介紹這三種類型的參數(shù)。 

  1.CPU 虛擬處理器(CPU VP)的參數(shù) 

  NUMCPUVPS:定義了 Informix IDS 開始啟動的 CPU VP 的數(shù)量。一般情況下不能超過系統(tǒng) CPU 的個數(shù),對于單或雙 CPU 的計算機系統(tǒng),建議設(shè)置 NUMCPUVPS 是 1 或者 2,即使用一個或兩個 CPU VP;對于有 4 個以上 CPU,建議設(shè)置 NUMCPUVPS 的值等于處理器總數(shù)減1。 

  SINGLE_CPU_VP:定義了多 CPU VP(0)和單 CPU VP(1)設(shè)置。 

  MULTIPROCESSOR:定義了多個 CPU VP(1)還是單個 CPU VP(0)。 

  AFF_NPROCS:定義了可以綁定到 CPU VP 的 CPU 的數(shù)目。 

  AFF_SPROC:定義了把連續(xù)的幾個 CPU(AFF_NRPOCS 參數(shù)定義的值)中第一個 CPU 的序號連接到 CPU VP 上。 

  例如,某個 Informix IDS 系統(tǒng)所在的硬件平臺有 4 個 CPU,AFF_NPROCS 設(shè)置為 3(即可用于綁定CPUVP的CPU 有 3 個),NUMCPUVPS 設(shè)置為 3, AFF_SPROC 設(shè)置為 1,則 3 個 CPUVP 需要綁定到 CPU 上,是從第 2 個 CPU 開始,綁定到第二、三、四個 CPU 上。SINGLE_CPU_VP 設(shè)置為 0。 

  2.對于磁盤 I/O 虛擬處理器(AIO VP)的配置 

  NUMAIOVP 指定系統(tǒng)上 AIO/KAIO 虛擬處理器的數(shù)目,如果 Informix IDS 采用裸設(shè)備存儲,可以設(shè)置成2。 

  在 Informix IDS9.2 以后的版本中將 NUMCPUVPS、NOAGE、AFF_NPROCS、AFF_SPROC、NUMAIOVP 用VPCLASS 參數(shù)代替。當(dāng) Informix IDS 處于 online 的狀態(tài)下,可以使用 onmode -p (+/-)# 來增加或者減少虛擬處理器。#代表增加或者減少虛擬處理器的個數(shù)。 

  3.對于網(wǎng)絡(luò)處理器參數(shù)的配置 

  NETTYPE:定義了Informix IDS 的連接類型和連接可以連接的輪詢線索數(shù)目。如果 sqlhosts 文件中支持一個以上的接口或協(xié)議的連接,就必須對每個連接類型規(guī)定獨立的 NETTYPE 參數(shù)。 

  輪詢線索可以在兩類VP上運行:NET VP和 CPUVP。為得到最佳性能,Informix 建議使用 NETTYPE 表項為CPU VP類只分配一個輪詢線索,將其余輪詢線索輪詢線索分配給 NET VP。分配給任何一種連接類型的輪詢線索不得超過 NUMCPUVPS 的取值。 

  NETTYPE 的配置格式如下:NETTYPE connection_type,poll_threads,c_per_t,vp_class 。其中,connection_type 標(biāo)識輪詢線索分配的連接協(xié)議;poll_threads 是分配給該連接類型的輪詢線索數(shù)目,對任何連接類型,這個值不能超過 NUMCPUVPS 值;c_per_t 是每個輪詢線索的連接數(shù)目,可以用如下公式計算這個值:c_per_t=connections/poll_threads;connections 是所希望指定的連接類型支持的最大連接數(shù)。對于共享內(nèi)存連接(ipcshm),該值應(yīng)該加倍以獲得最好的性能;vp_class 是可運行輪詢線索的 VP 類,如果 CPU VP 上只運行一個輪詢線索,那么指定為C PU VP。 

  在對虛擬處理器的監(jiān)控中,可以通過系統(tǒng)的一些命令,也可以通過數(shù)據(jù)庫的一些命令,常用的數(shù)據(jù)庫命令是 onstat-grea 和 onstat -g ioq。 

  以下是 onstat -g rea 的輸出: 

  /usr/informix >onstat -g rea 

  Informix Dynamic Server Version 9.30.FC5 -- On-Line -- Up 36 days 00:22:32 - 

  - 5352416 Kbytes 

  Ready threads: 

  tid tcb rstcb prty status vp-class name 

  onstat -g rea 監(jiān)控了就緒隊列中的線程數(shù)目。包括準(zhǔn)備運行而且在等待資源的線程。理想的狀態(tài)下是輸出極少的條目或者不顯示任何條目。如果輸出的某種 VP 類條目持續(xù)增長,那么就要考慮在該類中添加 VP。 

  在 onstat-g iog 指令的輸出中,最需要關(guān)注的列是 len 列。len 列的值應(yīng)該總是為 0 或接近于 0。如果該列的值很高并持續(xù)增長,那么我們可能需要添加另一個 AIO/KAIO 虛擬處理器來減少磁盤 I/O 負(fù)載。 

  監(jiān)控虛擬處理器的方法比較多,可以使用 Informix IDS 查詢語句在系統(tǒng)表中找到虛擬處理器的使用情況:還可以在 Unix 操作系統(tǒng)中使用系統(tǒng)命令 sar、top 等來監(jiān)控操作系統(tǒng)的 CPU 使用情況;還可以在一段時間內(nèi)的重復(fù)執(zhí)行 Informix IDS 命令 onstat-g glo 來監(jiān)控各個虛擬處理器已占用的 CPU 資源。判斷 CPU 的忙閑。 

  內(nèi)存使用效率的參數(shù)調(diào)整和監(jiān)控 

  Informix IDS 使用的內(nèi)存部分被數(shù)據(jù)庫服務(wù)器線程以及其他用戶和虛擬進程共享,所以這部分的內(nèi)存叫做共享內(nèi)存,共享內(nèi)存減少磁盤 I/O, 提供了最快地進行進程間通信的方法,還可以使數(shù)據(jù)庫服務(wù)器減少總的內(nèi)存使用。 

  Informix IDS 共享內(nèi)存分為四個部分:駐留部分、虛處理部分、消息部分和虛擬擴展區(qū)部分,其中消息部分只有在客戶機和服務(wù)器采用共享內(nèi)存方式連接時才有,而且尺寸很小。虛擬擴展區(qū)也極小,它包含了用于 DataBlade 模塊的線程 heaps 和其他在用戶定義的虛擬處理器中運行的用戶定義例程。 

  1.駐留內(nèi)存部分的參數(shù) 

  駐留內(nèi)存部分又可以細(xì)分為:共享內(nèi)存頭、緩沖區(qū),邏輯日志緩沖區(qū)、物理日志緩沖區(qū)、鎖。 

  共享內(nèi)存頭在共享內(nèi)存中包含所有其他結(jié)構(gòu)的描述,還包含到這些結(jié)構(gòu)位置的指針共享內(nèi)存頭是在初始化 Informix IDS 時創(chuàng)建的,并且不能進行調(diào)優(yōu)。 

  緩沖區(qū)存儲 Informix IDS 從 dbspace 所讀取的數(shù)據(jù),是數(shù)據(jù)庫對象數(shù)據(jù),如表的數(shù)據(jù)或索引數(shù)據(jù)。緩沖區(qū)占用了駐留內(nèi)存中最大的部分。所有的緩沖區(qū)被組織到一個較長的最近最少使用(least- recently-used,LRU)緩沖區(qū)隊列中,并通過最近最少使用(LRU)機制進行管理。定義緩沖區(qū)的參數(shù)是 BUFFERS。稱作指定共享內(nèi)存緩沖區(qū)的最大數(shù)目,該參數(shù)對數(shù)據(jù)庫 I/O 和事務(wù)處理吞吐量有明顯的影響。但是,如果分配過多的緩沖區(qū)會影響到操作系統(tǒng)的內(nèi)存并導(dǎo)致過多的交換內(nèi)存頁面的活動。一般建議設(shè)置為物理內(nèi)存的 20% 到20%。 

  邏輯日志緩沖區(qū)是用來存儲最后一次備份開始的邏輯日志記錄的。邏輯日志記錄保存了 SQL 語句對數(shù)據(jù)庫數(shù)據(jù)進行的修改。在初始化 Informix IDS 時,它創(chuàng)建三個邏輯日志緩沖區(qū),以循環(huán)方式運作,來確保將獲得的每一條邏輯日志記錄都被刷新到磁盤中。LOGBUFF 定義了邏輯日志緩沖區(qū)的數(shù)量,緩沖區(qū)的大小決定了它被添滿的頻率,從而決定了它必須被刷新到硬盤上的邏輯文件中的頻率。一般情況下,Informix IDS 建議設(shè)置為 16KB 或 32KB 

  物理日志緩沖區(qū)在 Informix IDS 修改或著刪除記錄之前,將該記錄的原始值存入到物理日志緩沖區(qū)中,在事務(wù)失敗時,用于恢復(fù)數(shù)據(jù),以保持?jǐn)?shù)據(jù)的一致性。在 Informix IDS 初始化時,創(chuàng)建了兩個物理日志緩沖區(qū),也以循環(huán)的方式運作。與物理日志緩沖區(qū)對應(yīng)的參數(shù)是 PHYSBUFF。 

  鎖包含可用鎖的數(shù)量,每個用戶對數(shù)據(jù)庫的連接并執(zhí)行數(shù)據(jù)庫的操作,都需要一定數(shù)量的鎖。在 Informix IDS9.2 以后的版本中,當(dāng)用戶的鎖不夠時,可以動態(tài)的分配鎖的數(shù)量。在以前的版本中,該數(shù)值是固定不變的。與鎖對應(yīng)的參數(shù)是 LOCKS。一般情況下設(shè)置為 2000 到 8000000 個。 

  2.共享內(nèi)存虛擬存儲區(qū)的參數(shù) 

  共享內(nèi)存虛擬存儲區(qū)存儲各種各樣的不同數(shù)據(jù),可以分為:內(nèi)部表、較大的緩沖區(qū)、會話數(shù)據(jù)、線程數(shù)據(jù)(堆棧和堆)、數(shù)據(jù)分布緩存器、字典緩存器、SPL 例程緩存器、SQL 語句緩存器、排序池、全局池。 

  影響虛擬存儲區(qū)的參數(shù)是:SHMADD、SHMVIRTSIZE 、STACKSIZE。 

  SHMVIRTSIZE 定義了分配 Informix IDS 共享內(nèi)存的虛擬存儲區(qū)的大小。Informix IDS 在處理大型查詢或高峰負(fù)荷的需要增加共享內(nèi)存給虛擬存儲區(qū),但是共享內(nèi)存的分配需要增加事務(wù)處理的時間,故在設(shè)置SHMVIRTSIZE 值時,一般考慮能滿足一個日常操作的需要。 

  STACKSIZE 指示了數(shù)據(jù)庫服務(wù)器為每個活動線程指派的初始堆棧的大小。如果將該參數(shù)配置得過小,那么線程將無法擁有執(zhí)行其程序的足夠內(nèi)存空間,而且它將干擾其他線程。 

  SHMADD 定義了 Informix IDS 自動加到虛擬存儲區(qū)的共享內(nèi)存增量的大小。在增加共享內(nèi)存時,要占用CPU 周期;每次的增加量越大,增加次數(shù)就越少,留給其它的進程的內(nèi)存也越少。所以一般采用大的增加量。但是在內(nèi)存負(fù)荷很重時,少量增加使其他程序更好的共享內(nèi)存資源。所以,如果實際內(nèi)存小于等于 256MB,則建議 SHMADD 使用缺省值 8192KB;如果在 256MB 到 512MB 之間,則設(shè)置為 16384KB;如果大于 512MB,則設(shè)置為32768KB。 

  可以用命令 onstat -g seg 來顯示 IDS 當(dāng)前共享內(nèi)存虛擬區(qū)中的段的數(shù)目。 

  Informix IDS 在初始化時,如果定義的虛擬內(nèi)存區(qū)尺寸太小,會自動向虛擬區(qū)附加其他操作系統(tǒng)段,虛擬內(nèi)存中的段過多從而引起數(shù)據(jù)庫的整體性能下降。所以在初始化時,將虛擬內(nèi)存區(qū)的尺寸配置得足夠大,以避免進行動態(tài)的分配共享內(nèi)存段。在該列的輸出中,class 列為 R 是駐留內(nèi)存段,V 是虛擬內(nèi)存段,M是消息內(nèi)存段。如果顯示的虛擬內(nèi)存段多于三個,那么就需要提高配置文件中 SHMVERSIZE 參數(shù)的值。 

  命令 onstat -p 是監(jiān)控內(nèi)存的另一個命令。其輸出結(jié)果中的兩個 %cache 顯示了讀寫高速緩存比例的百分比,一般在 80% 到 90%之間,如果低于80%,要調(diào)節(jié) BUFFERS 參數(shù)值。ovlock 字段表明 IDS 在使用了最大數(shù)量的鎖之后嘗試過再使用鎖的次數(shù),如果該數(shù)字非零,可能需要提高配置文件中 LOCKS 參數(shù)的值。ovbuf 字段表明 IDS 在使用了最大數(shù)量的緩沖區(qū)之后嘗試過再使用緩沖區(qū)的次數(shù)。如果該數(shù)字很大,比如說超過 100000,就需要提高 BUFFERS 參數(shù),以便用戶在需要從磁盤訪問數(shù)據(jù)時不必等待緩沖區(qū)。在監(jiān)控內(nèi)存的使用情況時還可以采用 Unix 系統(tǒng)命令 vmstat。 

  存儲器及 I/O 的參數(shù)調(diào)整和監(jiān)控 

  Informix IDS 支持兩種基本的數(shù)據(jù)存儲設(shè)備裸設(shè)備和文件系統(tǒng),建議使用裸設(shè)備存儲數(shù)據(jù)文件。與文件系統(tǒng)相比,裸設(shè)備在存取數(shù)據(jù)時要快得多,而且對用戶來說是看不到裸設(shè)備文件的,要安全一些。使用文件系統(tǒng)作為數(shù)據(jù)存儲設(shè)備還有一個潛在的危險,當(dāng)文件系統(tǒng)由于某些操作系統(tǒng)的錯誤而崩潰,且有一個數(shù)據(jù)庫事務(wù)正在進行時,數(shù)據(jù)庫服務(wù)器將認(rèn)為數(shù)據(jù)庫事務(wù)已經(jīng)成功完成,但實際上,該事務(wù)正陷入操作系統(tǒng)緩沖區(qū)中,這最終將導(dǎo)致數(shù)據(jù)庫中的某些不一致。 

  Informix IDS 在 dbspace 中存取數(shù)據(jù),dbspace又包含一個或多個 chunk(塊)。在 9.40 以后的版本中chunk的大小可以超過 2G,在以前的版本中不能超過2G??梢允褂?nbsp;onsta-d 監(jiān)控 dbspace 和 chunk 的使用情況和狀態(tài)。 

  與 I/O 參數(shù)調(diào)整直接相關(guān)的是檢查點。檢查點是使磁盤上的頁與共享內(nèi)存緩沖池中的頁同步的過程。檢查點時間包含檢查點間隔時間和檢查點持續(xù)時間。在檢查點期間,IDS 阻止用戶線程進入臨界會話,并阻止所有的事務(wù)活動。因此,檢查點持續(xù)時間過長,用戶會經(jīng)歷系統(tǒng)掛起。 

  CKPTINTVL 參數(shù)指定檢查點之間的時間間隔。當(dāng)檢查點間隔到了,則系統(tǒng)執(zhí)行檢查點操作。 

  PHYSFILE 指定物理日志的大小。一旦物理日志(PHYSFILE)的75%已滿,檢查點也會發(fā)生。 

  LRUS 參數(shù)指示共享內(nèi)存緩沖池中設(shè)置的最近最少使用(LRU)隊列數(shù)目。 

  可以用 LRUS 和 LRU_MAX_DIRTY 及 LRU_MIN_DIRTY 來控制在滿的檢查點之間頁被刷新到磁盤的頻度。在某些情況下,通過設(shè)置這些參數(shù),使得在檢查點發(fā)生時需要刷新修改的頁數(shù)量很少,可以達到高的吞吐量;假如檢查點持續(xù)時間始終超過 10 秒甚至以上,那么可能需要減少 LRU_MIN_DIRTY 和 LRU_MAX_DIRTY 配置參數(shù)的值以獲取更短的檢查點持續(xù)時間??梢允褂?nbsp;onstat -R 和 onstat -P、onstat -F 命令的輸出來確定參數(shù)值的大小。一般情況下 LRU_MIN_DIRTY 設(shè)置為 50,LRU_MAX_DIRTY 設(shè)置為 70。 

  調(diào)整 Informix IDS 參數(shù)來優(yōu)化數(shù)據(jù)庫性能,是 Informix IDS 性能優(yōu)化的一個方面,它的性能調(diào)優(yōu)還要從網(wǎng)絡(luò)、硬件、操作系統(tǒng)、應(yīng)用程序等多個方面來綜合考慮,其性能的優(yōu)化是一個高度復(fù)雜,異常繁瑣而且涉及面很廣的綜合性工作,而且它們之間相互關(guān)聯(lián),相互影響。在調(diào)整過程中,應(yīng)該明確數(shù)據(jù)庫的運行狀況和系統(tǒng)資源的使用情況,確定問題的瓶頸出現(xiàn)在哪里。然后根據(jù)問題的所在來優(yōu)化數(shù)據(jù)庫的性能。數(shù)據(jù)庫參數(shù)的調(diào)整是數(shù)據(jù)庫優(yōu)化的一個方面,在此只是想起到一個拋磚引玉的作用。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多