當前位置:
首頁 > 最新 > informix系列之基礎概念

informix系列之基礎概念

本文是對>中體系結構的一個簡單筆記,文中插圖也出於此書。有以下四部分的內容

1、informix實例

2、informix的共享內存

3、informix的磁碟使用

4、虛擬處理器與多線程

1、informix實例

informix實例就是一個經過配置的磁碟空間、內存與進程的集合,在onconfig文件中可對實例進行配置,一個實例對應一個onconfig配置文件。一台計算機上面可配置一個或多個實例。通常需要設置以下環境變數來確定當前的實例

INFORMIXDIR:informix的安裝目錄

ONCONFIG:定義當前實例的onconfig配置文件

INFORMIXSERVER:定義要連接的資料庫伺服器名

INFORMIXSQLHOSTS:定義使用的sqlhosts文件的完整路徑

PATH:包含$INFORMIXDIR/bin這個路徑

1.1、sqlhosts文件定義資料庫伺服器

在這個文件中包括以下4列

DBSERVERNAME NETTYPE HOSTNAME SERVICENAME

DBSERVERNAME:指定資料庫伺服器名,在onconfig文件中引用

NETTYPE:定義連接類型,格式為ddiiippp

dd:資料庫產品

on--IDS伺服器

se--informix se伺服器

iii:網路介面,

ipc--進程間通信,用於共享內存和流管道連接

soc--插槽

tli--傳輸層介面

ppp網路協議

shm--共享內存連接

tcp--tcp/ip協議

str--流管道

nmp--命名管道

spx--網路連接中的ipx/spx協議

HOSTNAME:包含實例的計算機名

SERVICENAME:dbservername使用的服務,在系統服務文件中定義/etc/services

1.2、實例的狀態

實例的狀態確定用戶是否能夠連接資料庫以及如何連接。管理員可通過onmonitoronmodeoninit命令來修改實例的狀態,改變實例的狀態將影響所有連接的用戶。

離線(off-line):任何用戶都不能連接資料庫,完全離線

靜態(quiescent mode):類似unix中的單用戶模式,只允許管理員連接

聯機(on-line):正常連接方式

只讀(read-only):不允許更新資料庫

恢復(recovery):如從一個文件中恢複數據,從離線切換到靜態、從離線切換到聯機

關閉(shutdown):從聯機到靜態

oninit -s:從離線到靜態

oninit:從離線到聯機

onmode -m:從靜態到聯機

onmode -s:從聯機到靜態

onmode -u:從聯機到靜態,立即終止用戶對話

onmode -k:從任何方式到離線,立即終止用戶對話

2、informix共享內存

共享內存是個操作系統特性,提供了對不同任務使用內存的功能。在IDS聯機時,IDS請求一定的共享內存量(在onconfig文件中配置),該內存由操作系統進行初始化分配成共享內存段,IDS鏈接共享內存段。使用ipcs -m瀏覽物理段,用informix的命令onstat -g seg查看邏輯段

共享內存有三種不同的部分:常駐部分、虛擬部分和消息部分

2.1、共享內存常駐部分

共享內存常駐部分包括:緩衝池、物理日誌緩衝、邏輯日誌緩衝。其中緩衝池存放從磁碟讀取的數據,是共享內存的最大區域。在onconfig文件中一下參數配置

BUFFERS:配置緩衝池的緩衝區數量(大小與ids的頁一致)

PHYSBUFF:物理日誌緩存大小(kb)

LOGBUFF:邏輯日誌緩存大小(kb)

以下著重記錄緩衝池這部分的內容,它是用來存放informix從磁碟讀取數據的地方,之後就可以從緩衝池中讀取數據,減少io和訪問時間。

緩衝池可以分為若干個LRU隊列,隊列數可以通過onconfig文件中的LRUS參數設置,可以通過onstat -R監視隊列,每個LRU隊列又分為兩個隊列

FLRU:記錄緩衝池中的自由和未修改頁面

MLRU:記錄緩衝池中已修改頁面

圖中一共有4個LRU隊列,每個隊列分別有一個FLRU和MLRU

上圖表示LRU隊列與緩衝池的關係,LRU實際是緩衝池裡頁的指針,通過LRU指向緩衝池裡的頁面。

當用戶訪問資料庫里的數據時,informix首先從緩衝池中搜索是否含有該數據。有的話直接返回,不再進行磁碟IO。如果緩衝池中沒有該數據,再從磁碟中讀取數據放入隨機選擇的一個LRU隊列指向的緩衝池中。如果包含該數據的頁面被修改,則放入MLRU隊列中,原數據放入物理日誌緩衝區中,數據的變更記錄放在邏輯日誌緩衝區內。緩衝池內的數據將定期的刷新到磁碟上,保證資料庫的物理一致。

在onconfig文件中,以下幾個參數將控制隊列的刷新頻率

CKPTINTVL:校驗點之間的間隔,當達到校驗點的時間時,頁面清理程序將刷新MLRU指向的頁面到磁碟中,和物理、邏輯日誌緩衝區。

CLEANERS:刷新MLRU頁面的最大線程數量

LRU_MAX_DIRTY:當已修改頁面的比例到達此值時,開始清理LRU隊列。

LRU_MIN_DIRTY:當已修改頁面的比例到達此值時,停止清理LRU隊列。

2.2、共享內存虛擬段

informix用虛擬內存記錄用戶對話期間發生的任務。虛擬內存的初始長度由onconfig文件中的SHMVIRTSIZE參數確定。

SHMVIRTSIZE:初始共享內存虛擬段大小(kb)

SHMADD:每次增加的共享內存段大小(kb)

SHMTOTAL:總共共享內存大小(kb),設置為0則無限制

上圖為共享內存虛擬段的內容,包括會話池、線程池、字典池、存儲過程池、排序池、大緩衝區池以及全局池。

虛擬段的分配和釋放是動態進行的,如果初始虛擬內存耗盡,則根據上述提到的參數再動態申請。

3、informix的磁碟使用

informix的所有數據都存放在磁碟上,有原始設備和熟文件空間之分。在這裡做一些簡單介紹。

3.1、物理存儲單元

物理存儲單元就是分配給informix的磁碟空間,可以分為原始設備和熟文件。

3.1.1原始設備

informix用字元特殊設備作為原始磁碟空間,通常使用原始設備進行磁碟存儲更加有效,讀數據時,可以越過操作系統直接與共享內存交互。原始設備的另一個優點是磁碟空間是連續的,這樣在查找數據的時候將大大提高性能。

3.1.2熟文件

熟文件即操作系統的文件,對熟文件的io操作將由操作系統管理。數據交互時將首先放在操作系統緩存內,然後再到共享內存。效率比原始設備要低的多,優點是配置jian"d簡單。

以下是物理單元的具體劃分:

頁:是磁碟可分配的最小單元,可以使用onstat -b命令查看,通常為2kb或4kb(在上面介紹的共享內存常駐段里緩衝區里的單元就是這個頁長度)。磁碟上的數據就是存放在這個頁內,informix讀寫數據時,都是以頁為單位,一頁可以包含表中的多行數據。

塊:塊可以是一個磁碟或磁碟里的一部分,在生成塊的時候要指定其長度(這個塊包含多個頁)

塊與頁的關係

區域:在一個塊中相鄰的頁,在創建數據表的時候,合理的指定區域長度能把該表的數據集中在一起,從而達到優化數據的讀取。有兩種區域:初始區域(EXTENT SIZE)和後續區域(NEXT SIZE),初始區域指生成表格時分配的空間量,後續區域指當一個區域滿的時候,為其再分配的空間量。

塊、區域、頁的關係

3.2、邏輯存儲單元

邏輯存儲單元定義informix如何管理物理存儲單元中的數據。下面對幾個重要的邏輯單元做下簡單的介紹。

dbspace:一個dbspace通常包含多個塊,創建dbspace之後就可以在上面創建資料庫、表格和索引。在生成dbspace的時候,會自動分配一個塊。之後如果空間不夠可以再增加塊到該dbspace內。

比較特殊的是informix的根dbspace,裡面包含實例的配置信息。首次初始化實例時,根據onconfig文件里的內容生成根dbspace。

可以使用以下命令來創建其它dbspace和塊,並添加其它塊到指定的dbspace內

onspaces -c -d dbspace1 -p /dev/rdesk -o 0 -s 100000

onspaces -a dbspace1 -p /dev/rdesk2 -o 0 -s 100000

onspaces -c -t tmpdbs -p /dev/rdesk3 -o 0 -s 100000(臨時表空間,需在onconfig文件中的DBSPACETEMP參數指定)

表格空間:為一張數據表使用的頁集合,不需要用戶來指定,informix自己生成.

資料庫、表格、索引:資料庫里包含表格和索引,存儲在dbspace內,在生成資料庫的時候應指定dbspace,否則將在根dbspace中。創建數據表時,默認在包含該表的資料庫所在的dbspace內,也可以指定到某個dbspace內,以提高檢索速度。

4、虛擬處理器與多線程

informix IDS能夠並行處理多個任務,要依賴於虛擬處理器的實現,每個虛擬處理器都可以並行執行多個線程處理多個客戶端的連接,這些虛擬處理器實際上是操作系統進程(oninit進程)。在onconfig配置文件中有幾個參數用來配置虛擬處理器

MULTIPROCESSOR:指定是否在多處理器計算機上運行

NUMAIOVPS:ids要啟動的AIO虛擬處理器的個數

NUMCPUVPS:ids要啟動的cpu虛擬處理器的個數

SINGLE_CPU_VP:指定只運行一個cpu虛擬處理器

4.1、虛擬處理器分類

不同的虛擬處理器負責不同的任務,以下做簡單說明

cpu:負責用戶的對話線程,cpuvp的數量不應超過機器可用cpu數量

pio:寫物理日誌

lio:寫邏輯日誌

aio:資料庫io

shm:處理共享內存鏈接

tli:處理tli網路鏈接

soc:處理套接網路鏈接

adm:負責管理工作

msc:其它工作

各類虛擬處理器的分工


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 福小道 的精彩文章:

TAG:福小道 |