日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何綜合掌握 DB2 和 Informix - Unix愛好者家園

 昵稱90415 2009-02-24
如何綜合掌握 DB2 和 Informix
 
作者:www.ibm-128.com  出處:www.ibm-128.com  更新時(shí)間: 2007年04月05日 
數(shù)據(jù)庫(kù)技術(shù)是一個(gè)不斷發(fā)展的知識(shí)領(lǐng)域。利用對(duì)某種產(chǎn)品目前所具有的知識(shí)并將它應(yīng)用到另一種相似的產(chǎn)品,這種方法使您能夠跟上不斷更新的技術(shù)的腳步。這篇文章演示了如何使用從 Informix 或 DB2 9 中獲得的技術(shù)來學(xué)習(xí)這兩種技術(shù)中的另外一種,并對(duì) IBM® Informix® Dynamic Server (IDS) 10 和 IBM DB2® 9 中使用的技術(shù)進(jìn)行了比較。

簡(jiǎn)介

DB2 9 和 IDS 10 的戰(zhàn)略定位是使數(shù)據(jù)庫(kù)的管理更加便捷,具有眾多內(nèi)置的特性。其中一些常見特性包括自治管理、對(duì)透明的 “靜默” 安裝的支持、對(duì)眾多開發(fā)范例的支持、最小化磁盤空間需求以及范圍分區(qū)。表 1 突出顯示了這些產(chǎn)品的主要特性。關(guān)于這兩種產(chǎn)品的更多信息,可參考 參考資料 一節(jié)。


表 1. 主要特性
DB2 9 IDS 10
pureXML 和混合數(shù)據(jù)服務(wù)
DB2 9 包含了提供 pureXML 服務(wù)的技術(shù),該服務(wù)不僅用于數(shù)據(jù)服務(wù)器外部接口,更準(zhǔn)確地說它擴(kuò)展到了 DB2 引擎的核心。DB2 9 中的 XML 和關(guān)系型服務(wù)被緊密集成,從而提供了業(yè)界內(nèi)第一個(gè) pureXML 和關(guān)系型混合數(shù)據(jù)服務(wù)器。
安全性增強(qiáng)
IBM IDS 10 在數(shù)據(jù)庫(kù)服務(wù)器的安全性、加密、身份驗(yàn)證和可用性方面做了很大程度的改進(jìn)。
數(shù)據(jù)壓縮
DB2 9 中的數(shù)據(jù)行壓縮技術(shù)為壓縮數(shù)據(jù)記錄提供了一種基于字典的算法。就是說,DB2 9 通過反復(fù)掃描表對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行行壓縮,復(fù)制數(shù)據(jù),并且構(gòu)建為這些重復(fù)條目分配短數(shù)字鍵的字典。由于重復(fù)出現(xiàn)的字符串以及具有大量重復(fù)字符或字符串前后空格的數(shù)據(jù),因此文本數(shù)據(jù)的壓縮效果也很好。
服務(wù)器可用性增強(qiáng)
服務(wù)器可用性增強(qiáng)包括易管理性、可伸縮性和高可用性。
自調(diào)優(yōu)內(nèi)存
DB2 中的自調(diào)優(yōu)內(nèi)存管理器使用智能控制以及反饋機(jī)制,能夠跟蹤內(nèi)存的消耗情況以及對(duì)數(shù)據(jù)庫(kù)中各種共享資源的需求的變化,并根據(jù)需要?jiǎng)討B(tài)調(diào)整它們對(duì)內(nèi)存的使用。
性能增強(qiáng)
性能增強(qiáng)包括查詢性能和恢復(fù)時(shí)間方面的改進(jìn)。除了下面要討論的主題以外,還在以下方面做出了增強(qiáng)以提升性能:
  • XA 事務(wù)
  • 嵌套的與 ANSI 兼容的左外連接
  • 子查詢
  • 全外連接
基于標(biāo)簽的訪問控制(Label Based Access Control,LBAC)安全性
LBAC 是 DB2 中的一個(gè)安全特性,它提供了對(duì)單個(gè)行和列級(jí)的粒度讀寫訪問。DB2 9 提供了一個(gè)新的具有特殊安全性權(quán)限的 DB2 安全管理員角色(SECADM)。 SECADM 用戶可以被授予與安全性相關(guān)的權(quán)限,甚至是系統(tǒng)管理員(SYSADM)都不具備這些權(quán)限。
SQL 增強(qiáng)
SQL 增強(qiáng)改善了數(shù)據(jù)庫(kù)的可用性??梢栽跓o需鎖定表的情況下創(chuàng)建和刪除索引。
表分區(qū)
表分區(qū)(有時(shí)也稱為范圍分區(qū))是一種數(shù)據(jù)組織模式,此模式中,根據(jù)一個(gè)或多個(gè)表列的值,表數(shù)據(jù)被分到多個(gè)稱為數(shù)據(jù)分區(qū)的存儲(chǔ)對(duì)象中。這些存儲(chǔ)對(duì)象可位于不同的表空間、相同的表空間或兩種情況的組合。
企業(yè)復(fù)制增強(qiáng)
企業(yè)復(fù)制增強(qiáng)簡(jiǎn)化了管理工作,提高了數(shù)據(jù)的完整性并允許執(zhí)行額外的 SQL 操作。
應(yīng)用程序開發(fā)增強(qiáng)
DB2 9 中對(duì)應(yīng)用程序的開發(fā)增強(qiáng)包括一個(gè)新的 Developer Workbench、與 .NET 環(huán)境更具深度的集成、對(duì) XML 的豐富支持、用于 PHP 和 Ruby 接口的新的驅(qū)動(dòng)器和適配器以及新的應(yīng)用程序樣例。
備份和恢復(fù)增強(qiáng)
備份和恢復(fù)增強(qiáng)改善了性能和錯(cuò)誤調(diào)試。
存儲(chǔ)增強(qiáng)
存儲(chǔ)增強(qiáng)改善了使用的簡(jiǎn)易性。長(zhǎng)標(biāo)識(shí)符和 High-Performance Loader 有助于進(jìn)行存儲(chǔ)。Tivoli Storage Manager 的 Informix 界面有助于高效數(shù)據(jù)存儲(chǔ)。
可擴(kuò)展性增強(qiáng)
可擴(kuò)展性增強(qiáng)在分布式事務(wù)、從執(zhí)行觸發(fā)器操作中獲取信息以及 Java 支持方面做出了改進(jìn)。
安裝增強(qiáng)
安裝增強(qiáng)改善了可用性。
互操作性增強(qiáng)
互操作性增強(qiáng)改善了 Informix 和 DB2 產(chǎn)品之間的通信。

版本和平臺(tái)支持

DB2 9 和 Informix IDS 10 為任何種類的業(yè)務(wù)提供了正確的數(shù)據(jù)管理解決方案。這兩種產(chǎn)品都提供了包裝了眾多特性和功能的不同產(chǎn)品版本,以適應(yīng)大量來自客戶的不同需求。中小型企業(yè)可以選擇 Express Editions,而 Workgroup 和 Enterprise Editions 則適合大型企業(yè)。連同這些版本,DB2 9 另外提供了兩個(gè)版本:Personal Edition 和 Developer Edition,以及一個(gè)免費(fèi)版 DB2 Express-C。表 2 描述了 DB 9 和 Informix IDS 10 中可用的版本。


表 2. 版本和平臺(tái)支持
DB2 9 IDS 10
DB2 Express Edition 9 for Linux, UNIX, and Windows
DB2 Express 9 是一個(gè)功能完備的 DB2 數(shù)據(jù)服務(wù)器,它為中小企業(yè)(Small and Medium Business,SMB)市場(chǎng)提供了極具吸引力的入門級(jí)價(jià)格。該版本提供了經(jīng)簡(jiǎn)化的程序包,可在應(yīng)用程序內(nèi)輕松進(jìn)行透明安裝。DB2 Express 9 可以輕松升級(jí)到 DB2 9 的其他版本,它還具有和其他可伸縮性更高的版本相同的自主管理特性。
IDS Express Edition 10 for Linux, UNIX, and Windows

IDS Express Edition 適合于中型企業(yè)。它是一個(gè)功能完備的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器。IDS Express Edition 包括諸如自治管理和簡(jiǎn)化安裝這樣的特性。幾乎不需要為其管理的特性支持大量開發(fā)范例。最小的磁盤空間需求支持可擴(kuò)展性。

DB2 Workgroup Server Edition 9 for Linux, UNIX, and Windows
若要在一個(gè)部門、工作組和中型企業(yè)環(huán)境中進(jìn)行部署,DB2 Workgroup 9 是作為數(shù)據(jù)服務(wù)器的完美選擇。它為中型安裝提供了極具吸引力的價(jià)格,同時(shí)提供了功能完備的數(shù)據(jù)服務(wù)器。
IDS Workgroup Edition 10 for Linux, UNIX and Windows
IDS Workgroup Edition 適用于大型企業(yè)中的部門以及中型企業(yè)。這個(gè)版本提供了 IDS Express Edition 的所有特性。此外,它還支持并行數(shù)據(jù)查詢、并行備份和恢復(fù)、高性能加載器和高可用性數(shù)據(jù)復(fù)制(可作為增件購(gòu)買)。
DB2 Enterprise Server Edition (ESE) 9 for Linux, UNIX, and Windows
DB2 ESE 9 被設(shè)計(jì)為可以滿足中到大型企業(yè)的數(shù)據(jù)服務(wù)器需求。DB2 ESE 9 是構(gòu)建隨需應(yīng)變企業(yè)級(jí)解決方案(如下所示)的理想基礎(chǔ):
  • 多個(gè)千兆規(guī)模的大型數(shù)據(jù)倉(cāng)庫(kù)
  • 高性能、24x7 可用、大容量事務(wù)處理業(yè)務(wù)解決方案
  • 基于 Web 的解決方案
此外,DB2 ESE 9 還提供了與其他 Enterprise DB2 和 IDS 數(shù)據(jù)源的連通性、兼容性以及集成。
IDS Enterprise Edition 10 for Linux, UNIX, and Windows
IDS Enterprise Edition 被設(shè)計(jì)為可滿足大型企業(yè)的需求。它包括 IDS Workgroup Edition 的所有特性,以及為處理高負(fù)載和 24x7 可用性提供可伸縮性所需的特性。該版本包括以下特性:
  • 企業(yè)數(shù)據(jù)復(fù)制
  • 高可用性數(shù)據(jù)復(fù)制
DB2 Personal Edition for Linux, UNIX, and Windows
DB2 Personal 9 是一個(gè)單用戶、功能完備、具有內(nèi)置復(fù)制的關(guān)系型數(shù)據(jù)庫(kù)。對(duì)于基于桌面和膝上型電腦的部署是一個(gè)理想選擇。DB2 Personal 9 可以進(jìn)行遠(yuǎn)程管理,這使其成為在不要求多用戶能力的不定期連接或遠(yuǎn)程辦公實(shí)現(xiàn)中的最佳部署選擇。
Database Enterprise Developer Edition
此版本為單一應(yīng)用程序開發(fā)人員提供軟件包,用于設(shè)計(jì)、構(gòu)建和原型化應(yīng)用程序,以在任意 IBM 信息管理客戶端或服務(wù)器平臺(tái)上部署。這一全面的開發(fā)人員產(chǎn)品包括 DB2 Workgroup 9、DB2 Enterprise 9、IDS Enterprise Edition V10、Cloudscape V10.1、DB2 Connect Unlimited Edition for zSeries 和所有 DB2 9 特性,允許客戶構(gòu)建利用最新數(shù)據(jù)服務(wù)器技術(shù)的解決方案。
DB2 Express-C
DB2 Express-C 是為社區(qū)提供的 DB2 Express Edition(DB2 Express)的一個(gè)版本。DB2 Express-C 是一個(gè)免費(fèi)的數(shù)據(jù)服務(wù)器,可用于開發(fā)和部署 XML、C/C++、Java、.NET 和 PHP 應(yīng)用程序。DB2 Express-C 最多可運(yùn)行在雙核 CPU、4 GB 內(nèi)存的服務(wù)器上,以及對(duì)數(shù)據(jù)庫(kù)規(guī)模或其他人為限制沒有要求的任何存儲(chǔ)系統(tǒng)。

體系結(jié)構(gòu)概述 —— 比較 DB2 9 ESE 和 IDS 10

在 DB2 中,一個(gè)實(shí)例就提供了一個(gè)獨(dú)立的環(huán)境,在其中可以創(chuàng)建數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)中運(yùn)行應(yīng)用程序。

由于存在這些獨(dú)立的環(huán)境,兩個(gè)或更多實(shí)例可以具有相同名稱的數(shù)據(jù)庫(kù)。圖 1 中,數(shù)據(jù)庫(kù) MYDB2 和實(shí)例 DB2 相關(guān)聯(lián),而另一個(gè)數(shù)據(jù)庫(kù) MYDB2 和一個(gè)不同的實(shí)例 MYINST 相關(guān)聯(lián)。

實(shí)例允許用戶擁有獨(dú)立自主的環(huán)境,用于生產(chǎn)、測(cè)試和開發(fā)。

DB2 中和實(shí)例相關(guān)的命令
db2icrt instance_name —— 創(chuàng)建一個(gè)實(shí)例
                                                                                db2idrop instance_name —— 丟棄一個(gè)實(shí)例
                                                                                set db2instnace=instance_name —— 設(shè)置當(dāng)前實(shí)例
                                                                                db2start —— 啟動(dòng)當(dāng)前實(shí)例
                                                                                db2stop —— 停止當(dāng)前實(shí)例

在 DB2 安裝過程中會(huì)創(chuàng)建一個(gè)默認(rèn)實(shí)例。在 Windows 中該默認(rèn)實(shí)例被稱為 DB2,而在 Linux 和 UNIX 中被稱為 db2inst1。同樣,可以使用 db2icrt 命令創(chuàng)建一個(gè)實(shí)例。

每一個(gè) DB2 實(shí)例可具有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)。每一個(gè)實(shí)例具有一個(gè)數(shù)據(jù)庫(kù)管理配置文件。此外,每一個(gè)數(shù)據(jù)庫(kù)可擁有自己的數(shù)據(jù)庫(kù)配置文件、目錄表、日志、保留的緩沖池區(qū)域和表空間。表空間包括常規(guī)表空間、長(zhǎng)表空間(用于 LOB 數(shù)據(jù))、用戶臨時(shí)表空間和系統(tǒng)臨時(shí)表空間。對(duì)于每個(gè)數(shù)據(jù)庫(kù)來說,調(diào)優(yōu)參數(shù)、資源管理和日志會(huì)有所不同,并且可以在數(shù)據(jù)庫(kù)級(jí)別上對(duì)其進(jìn)行控制。


圖 1. DB2 體系結(jié)構(gòu)概覽
DB2 體系結(jié)構(gòu)概覽

						環(huán)境變量
                                                                                INFORMIXDIR —— 安裝位置
                                                                                ONCONFIG —— 實(shí)例配置文件
                                                                                INFORMIXSERVER —— 實(shí)例名稱
                                                                                INFORMIXSQLHOSTS —— 一個(gè)文件的名稱,該文件包含實(shí)例主機(jī)與端口的相關(guān)信息
                                                                                Informix 中與實(shí)例相關(guān)的命令
                                                                                Oninit -i —— 創(chuàng)建一個(gè)實(shí)例
                                                                                Oninit —— 啟動(dòng)當(dāng)前實(shí)例
                                                                                Onmode -k —— 停止當(dāng)前實(shí)例
                                                                                

和 DB2 相似,IDS 實(shí)例也提供了一個(gè)獨(dú)立的環(huán)境,在其中創(chuàng)建數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)中運(yùn)行應(yīng)用程序。每一個(gè)實(shí)例具有一個(gè)默認(rèn)的 dbspace(rootdbspace)、配置文件、三個(gè)系統(tǒng)目錄數(shù)據(jù)庫(kù)(SysMaster、SysUtils 和 SysUsers)、日志和緩沖池。此外,可以在創(chuàng)建實(shí)例的同時(shí)選擇創(chuàng)建一個(gè) tempdbspace。一個(gè)實(shí)例可以具有多于一個(gè)的 dbspace。dbspace 的類型有常規(guī) dbspace、臨時(shí) dbspace、blobspace、sbspace 和 extspace。與 DB2 不同的是,IDS 數(shù)據(jù)庫(kù)在實(shí)例級(jí)別上共享日志、緩沖池和臨時(shí) dbspace。此外,每一個(gè)數(shù)據(jù)庫(kù)擁有自己的目錄表和用戶表。圖 2顯示了兩個(gè) IDS 實(shí)例。

可以使用 oninit -i 命令對(duì) IDS 實(shí)例進(jìn)行實(shí)例化。實(shí)例名稱由環(huán)境變量 INFORMIXSERVER 指定。與 DB2 不同,IDS 沒有刪除實(shí)例的顯式命令 。然而,可以改變諸如根路徑的配置參數(shù)和服務(wù)器編號(hào),然后再使用 oninit -i 命令。這個(gè)命令實(shí)例化所有和環(huán)境相關(guān)聯(lián)的實(shí)例。因此,使用該命令時(shí)應(yīng)該非常謹(jǐn)慎。在 IDS 中創(chuàng)建實(shí)例要使用一組環(huán)境變量和配置參數(shù),這些內(nèi)容都在 ONCONFIG 環(huán)境變量指定的文件中做了定義。因此,在發(fā)出 oninit -i 命令之前設(shè)置所有相關(guān)的配置參數(shù)非常重要??梢允褂?Informix 實(shí)用工具 onmonitor 或使用任何的編輯器定義配置參數(shù)。下面介紹了其中一些配置參數(shù)。

ROOTNAME rootdbs # 根 dbspace 名稱
ROOTPATH /dev/online_root # 包含根 dbspace 的設(shè)備的路徑
SERVERNUM 0 # 與 OnLine 實(shí)例相對(duì)應(yīng)的惟一 ID
DBSERVERNAME # 默認(rèn)數(shù)據(jù)庫(kù)服務(wù)器的名稱
LOGFILES 6 # 邏輯日志文件的編號(hào)
TAPEDEV /dev/tapedev # Tape 設(shè)備路徑
LTAPEDEV /dev/tapedev # Log tape 設(shè)備路徑
LOCKS 2000 # 鎖的最大值

圖 2. IDS 體系結(jié)構(gòu)概覽
IDS 體系結(jié)構(gòu)概覽







進(jìn)程模型

有關(guān) DB2 進(jìn)程模型的知識(shí)可以幫助確定問題的性質(zhì),這是因?yàn)檫@些知識(shí)可以幫助理解數(shù)據(jù)庫(kù)管理器與其相關(guān)的組件如何相互作用。基于 UNIX 的環(huán)境使用基于系統(tǒng)進(jìn)程的體系結(jié)構(gòu)。例如,將 DB2 通信偵聽器作為系統(tǒng)進(jìn)程進(jìn)行創(chuàng)建。諸如 Windows 之類的 Intel 操作系統(tǒng),使用基于線程的體系結(jié)構(gòu)以達(dá)到性能最大化。

代理

代理可以被看作是代表應(yīng)用程序執(zhí)行所有數(shù)據(jù)庫(kù)操作的工人。有兩種主要類型的 DB2 代理:

  • 協(xié)調(diào)代理程序(db2agent): 協(xié)調(diào)代理程序代表應(yīng)用程序協(xié)調(diào)工作,并使用進(jìn)程間通信(IPC)或遠(yuǎn)程通信協(xié)議與其它代理程序進(jìn)行通信。所有來自客戶機(jī)應(yīng)用程序的連接請(qǐng)求,無論是本地還是遠(yuǎn)程的,都分配了相應(yīng)的協(xié)調(diào)代理程序。

  • 子代理程序(db2agntp): 如果啟用了 intra_parallel 數(shù)據(jù)庫(kù)管理器配置參數(shù),協(xié)調(diào)代理程序就會(huì)把數(shù)據(jù)庫(kù)請(qǐng)求分發(fā)給子代理程序(db2agntp)。這些代理程序執(zhí)行應(yīng)用程序的請(qǐng)求。一旦創(chuàng)建了協(xié)調(diào)代理程序,通過協(xié)調(diào)對(duì)數(shù)據(jù)庫(kù)執(zhí)行請(qǐng)求的子代理程序(db2agent),協(xié)調(diào)代理程序代表其應(yīng)用程序處理所有數(shù)據(jù)庫(kù)請(qǐng)求。

當(dāng)某個(gè)代理程序或子代理程序完成其任務(wù)時(shí),它就轉(zhuǎn)為空閑狀態(tài)。當(dāng)子代理程序處于空閑狀態(tài)時(shí),其名稱從 db2agntp 變?yōu)?db2agnta??臻e代理程序駐留在代理程序池中。這些代理程序可用于來自代表客戶機(jī)程序進(jìn)行操作的協(xié)調(diào)代理程序,或來自代表現(xiàn)有協(xié)調(diào)代理程序進(jìn)行操作的子代理程序的請(qǐng)求??捎玫拇沓绦驍?shù)取決于數(shù)據(jù)庫(kù)管理器配置參數(shù) maxagents和 num_poolagents。圖 3 顯示了 DB2 進(jìn)程模型。


圖 3. DB2 進(jìn)程模型(用于非分區(qū)數(shù)據(jù)庫(kù))
DB2 進(jìn)程模型

上圖中的每一個(gè)圓圈代表示引擎分派單元(EDU),在 Linux/UNIX 平臺(tái)上稱為進(jìn)程,而在 Windows 上稱為線程。

db2fmp 是一個(gè)受防護(hù)的進(jìn)程。用于在防火墻之外執(zhí)行受防護(hù)的存儲(chǔ)過程和用戶定義的函數(shù)。db2fmp 始終是獨(dú)立的進(jìn)程,但是根據(jù)它執(zhí)行的例程類型,也可能是多線程的。

下面列出了一些每個(gè)數(shù)據(jù)庫(kù)系統(tǒng)使用的重要線程或進(jìn)程:

  • db2pclnr:緩沖池頁面清除程序。
  • db2logmgr:日志管理器。該進(jìn)程為可恢復(fù)的數(shù)據(jù)庫(kù)管理日志文件。
  • db2loggr:該進(jìn)程操作日志文件用于處理事務(wù)進(jìn)程和恢復(fù)。
  • db2dlock:用于檢測(cè)死鎖。
  • db2taskd:用于后臺(tái)數(shù)據(jù)庫(kù)任務(wù)的分發(fā)。進(jìn)程通過調(diào)用 db2taskp 執(zhí)行該任務(wù)。

為了使數(shù)據(jù)庫(kù)服務(wù)器能發(fā)揮作用,必須具備系統(tǒng)控制器(db2sysc)。同樣,啟動(dòng)其他眾多線程和進(jìn)程來執(zhí)行不同任務(wù)。下面列出了其中一些。在 參考資料 一節(jié)中參考 DB2 信息中心,了解更多關(guān)于 DB2 進(jìn)程的信息。

  • db2resync:resync 代理,可以掃描全局的 resync 列表。
  • db2gds:基于 UNIX 系統(tǒng)的全局守護(hù)進(jìn)程衍生程序(Global Daemon Spawner)進(jìn)程,它將啟動(dòng)新的進(jìn)程。
  • db2wdog:基于 UNIX 系統(tǒng)的看守程序,處理異常終止。
  • db2pdbc:它處理來自遠(yuǎn)程節(jié)點(diǎn)的并行請(qǐng)求。(只用于分區(qū)數(shù)據(jù)庫(kù)環(huán)境中)。
  • db2fmd:默認(rèn)的監(jiān)視器守護(hù)進(jìn)程。
  • db2disp:客戶連接集中分派器。

圖 4. IDS 內(nèi)存體系結(jié)構(gòu)和后臺(tái)進(jìn)程
IDS 內(nèi)存體系結(jié)構(gòu)

IDS 由三個(gè)主要組件組成:進(jìn)程,內(nèi)存和磁盤。剛剛討論了進(jìn)程組件,本文稍后將討論內(nèi)存和磁盤組件。

IDS 是一個(gè)多線程數(shù)據(jù)庫(kù)服務(wù)器。該多線程體系結(jié)構(gòu)使用了很少的進(jìn)程來執(zhí)行數(shù)據(jù)庫(kù)活動(dòng)。通過使用線程,一個(gè)進(jìn)程可以為一個(gè)以上的應(yīng)用程序工作。如果需要的話可以為數(shù)據(jù)庫(kù)服務(wù)器動(dòng)態(tài)分配進(jìn)程,因此才有了動(dòng)態(tài)服務(wù)器(Dynamic Server)這個(gè)術(shù)語。IDS 允許增加可伸縮性。這種多線程實(shí)現(xiàn)可以容納大量的事務(wù)而只占用較少的額外資源。

虛擬進(jìn)程(VP)

oninit 進(jìn)程又稱為虛擬處理器,組成了 IDS。每個(gè) VP 屬于一個(gè) VP 類。一個(gè) VP 類負(fù)責(zé)執(zhí)行一組特定任務(wù)集。oninit 進(jìn)程被映射到數(shù)據(jù)庫(kù)服務(wù)器使用的不同 VP 類。 下面對(duì)每一種 VP 類進(jìn)行了簡(jiǎn)要說明:

  • CPU VP:該類執(zhí)行大多數(shù)進(jìn)程,它的目的就是執(zhí)行數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程的所有 CPU 密集型任務(wù)。管理員可以根據(jù)需要通過數(shù)據(jù)庫(kù)服務(wù)器增加或減少 CPU VP 類的數(shù)量。
  • KAIO VP:Kernel Asynchronous I/O VP 運(yùn)行內(nèi)部線程來對(duì)原始設(shè)備執(zhí)行 I/O。
  • AIO VP:該類用來執(zhí)行 I/O 從而操作系統(tǒng)文件(也稱為成熟文件)。
  • LIO VP: 運(yùn)行內(nèi)部線程從而寫入磁盤上的邏輯日志。
  • PIO VP: 運(yùn)行內(nèi)部線程從而寫入磁盤上的物理日志。
  • SHM VP: 當(dāng)應(yīng)用程序正在使用通信的共享內(nèi)存方法時(shí),該類將為新連接處理輪詢?nèi)蝿?wù)。
  • SOC VP: 為通信的 TCP/IP Berkeley 套接字方法處理輪詢?nèi)蝿?wù)。
  • TLI VP: 為 Transport Library Interface (TLI) 編程接口處理輪詢?nèi)蝿?wù),該接口用于 TCP/IP 或 Internetwork Packet Exchange (IPX)/Sequenced Packet Exchange (SPX) 和應(yīng)用程序之間的通信。
  • MSC VP: 為其他混合的任務(wù)運(yùn)行線程。






內(nèi)存模型


圖 5. DB2 內(nèi)存結(jié)構(gòu)
DB2 內(nèi)存結(jié)構(gòu)

本文將介紹實(shí)例共享內(nèi)存和數(shù)據(jù)庫(kù)共享內(nèi)存。

實(shí)例共享內(nèi)存

每個(gè) DB2 實(shí)例都有一個(gè)實(shí)例共享內(nèi)存。實(shí)例共享內(nèi)存是在數(shù)據(jù)庫(kù)管理器啟動(dòng)(db2start)時(shí)分配的,并隨著數(shù)據(jù)庫(kù)管理器的停止(db2stop)而釋放。這種內(nèi)存集用于實(shí)例級(jí)的任務(wù),例如監(jiān)控、審計(jì)和節(jié)點(diǎn)間通信。下面的數(shù)據(jù)庫(kù)管理器配置(dbm cfg)參數(shù)控制著對(duì)實(shí)例共享內(nèi)存以及其中個(gè)別內(nèi)存池的限制:

  • 實(shí)例內(nèi)存(instance_memory): 這個(gè)參數(shù)指定了應(yīng)該為實(shí)例管理保留的內(nèi)存數(shù)量。包括描述實(shí)例數(shù)據(jù)庫(kù)的內(nèi)存區(qū)。
  • 監(jiān)視器堆(mon_heap_sz): 該參數(shù)確定了頁面中的內(nèi)存數(shù)量,用于分配給數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)視數(shù)據(jù)。當(dāng)執(zhí)行數(shù)據(jù)庫(kù)監(jiān)視活動(dòng)時(shí),將從監(jiān)視堆分配內(nèi)存,這些活動(dòng)包括拍攝快照、打開監(jiān)視器開關(guān)、重置監(jiān)視器或激活一個(gè)事件監(jiān)視器。

  • 審計(jì)緩沖區(qū)大?。╝udit_buf_sz): 該參數(shù)指定審計(jì)數(shù)據(jù)庫(kù)時(shí)使用的緩沖區(qū)的大小。這將用于 db2audit 實(shí)用工具。

  • 快速通信緩沖區(qū)(fcm_num_buffers): 該參數(shù)指定了 4 KB 大小的緩沖區(qū)的數(shù)量,這些緩沖區(qū)用于數(shù)據(jù)庫(kù)服務(wù)器內(nèi)部以及數(shù)據(jù)庫(kù)服務(wù)器之間的內(nèi)部通信,還用于分區(qū)和代理之間的節(jié)點(diǎn)間通信。分區(qū)實(shí)例或具有 INTRA_PARALLEL 的實(shí)例設(shè)置為 ON。

數(shù)據(jù)庫(kù)內(nèi)存模型

圖中的完整綠色方框意味著,在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候,該內(nèi)存池是完全分配的,否則,就只分配部分的內(nèi)存。例如,當(dāng)一個(gè)數(shù)據(jù)庫(kù)第一次啟動(dòng)時(shí),不管 util_heap_sz 的值是多少,只有大約 16 KB 的內(nèi)存被分配給實(shí)用工具堆。當(dāng)一個(gè)數(shù)據(jù)庫(kù)實(shí)用工具(例如備份、恢復(fù)、導(dǎo)出、導(dǎo)入和裝載)啟動(dòng)時(shí),才會(huì)按 util_heap_sz 指定的大小分配全額的內(nèi)存。


圖 6. DB2 數(shù)據(jù)庫(kù)共享內(nèi)存
DB2 數(shù)據(jù)庫(kù)共享內(nèi)存

數(shù)據(jù)庫(kù)緩沖池 通常是數(shù)據(jù)庫(kù)共享內(nèi)存中最大的一塊內(nèi)存。DB2 在其中操縱所有常規(guī)數(shù)據(jù)和索引數(shù)據(jù)。一個(gè)數(shù)據(jù)庫(kù)必須至少有一個(gè)緩沖池,并且可以有多個(gè)緩沖池,具體要視工作負(fù)載的特征、數(shù)據(jù)庫(kù)中使用的數(shù)據(jù)庫(kù)頁面大小等因素而定。

IDS 的共享內(nèi)存組件 屬于實(shí)例級(jí),被分為三個(gè)部分,如上面圖 4 所示。

  • 常駐內(nèi)存段:也被稱為常駐區(qū),包含用于從數(shù)據(jù)庫(kù)緩存頁面的緩沖區(qū)、最近最少使用(LRU)的隊(duì)列、邏輯日志緩沖區(qū),并包含了大量結(jié)構(gòu)用于跟蹤服務(wù)器使用的資源。這將有助于更加快速地訪問。
  • 虛擬內(nèi)存段:虛擬區(qū)用于維護(hù)和控制進(jìn)程所需的資源。虛擬段包含關(guān)于線程和會(huì)話信息以及它們所使用的數(shù)據(jù)。這些信息總是在不斷變化(增加或減少)。數(shù)據(jù)庫(kù)服務(wù)器在虛擬區(qū)中管理內(nèi)存的分配和解除分配。虛擬內(nèi)存段還包含字典緩存器,存儲(chǔ)過程緩存器,以及在向磁盤一次性寫入大塊頁面時(shí)使用到的較大的緩沖池。當(dāng)對(duì)數(shù)據(jù)進(jìn)行分類時(shí),這個(gè)區(qū)也會(huì)增長(zhǎng),例如通過服務(wù)器構(gòu)建大索引。
  • 通信段:共享內(nèi)存通信區(qū),也被稱為消息區(qū),被作為客戶機(jī)和服務(wù)器進(jìn)程的一種通信機(jī)制。在客戶機(jī)和服務(wù)器通過共享內(nèi)存進(jìn)行通信時(shí),消息區(qū)將用作兩者之間的消息緩沖區(qū)。

磁盤組件 是一個(gè)或多個(gè)被分配到數(shù)據(jù)庫(kù)服務(wù)器的磁盤空間單元的集合。包括所有維護(hù)服務(wù)器系統(tǒng)的系統(tǒng)信息,以及所有存儲(chǔ)在磁盤組件內(nèi)的數(shù)據(jù)庫(kù)數(shù)據(jù)。IDS 在一個(gè)單個(gè)計(jì)算機(jī)上可具有從 1 到 256 個(gè)實(shí)例,與 DB2 相同。


圖 7. 高級(jí) IDS 實(shí)例體系結(jié)構(gòu)
 高級(jí) IDS 實(shí)例體系結(jié)構(gòu)

DB2 在四個(gè)不同內(nèi)存集(memory set)拆分和管理內(nèi)存,這四個(gè)內(nèi)存集是:

  • 實(shí)例共享內(nèi)存(instance shared memory)
  • 數(shù)據(jù)庫(kù)共享內(nèi)存(Database shared memory)
  • 應(yīng)用程序組共享內(nèi)存(application group shared memory)
  • 代理私有內(nèi)存(agent private memory)

每種內(nèi)存集由各種不同的內(nèi)存池(亦稱堆)組成。圖 1 也給出了各內(nèi)存池的名稱。例如,lock list 是屬于數(shù)據(jù)庫(kù)共享內(nèi)存集的一個(gè)內(nèi)存池。sort heap 是屬于代理私有內(nèi)存集的一個(gè)內(nèi)存池。







數(shù)據(jù)庫(kù)創(chuàng)建和存儲(chǔ)模型

在 DB2 中,可以使用數(shù)據(jù)庫(kù)創(chuàng)建命令或使用控制中心工具創(chuàng)建數(shù)據(jù)庫(kù)。本文將介紹如何使用命令創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象。在探討這些命令之前,先來了解一下什么是表空間。

表空間

表空間是一個(gè)包含表、索引、大對(duì)象和長(zhǎng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。表空間謂語數(shù)據(jù)庫(kù)內(nèi)。它允許您直接將數(shù)據(jù)庫(kù)和表數(shù)據(jù)的位置分配到容器上。(一個(gè)容器可以是一個(gè)目錄名、一個(gè)設(shè)備名或一個(gè)文件名。)這種機(jī)制可以提供改善的性能和更加靈活的配置。一個(gè)數(shù)據(jù)庫(kù)可以具有多于一個(gè)的表空間,而一個(gè)表空間不能同時(shí)屬于多個(gè)數(shù)據(jù)庫(kù)。

表空間管理

在 DB2 中,可以有兩種不同的方式管理表空間:, table spaces are managed in two different ways:

  • 系統(tǒng)管理的空間(SMS):SMS 表空間由操作系統(tǒng)進(jìn)行管理。容器被定義成常規(guī)操作系統(tǒng)文件,并且是通過操作系統(tǒng)調(diào)用訪問的。這意味著所有的常規(guī)操作系統(tǒng)功能將處理以下內(nèi)容:操作系統(tǒng)將緩沖 I/O;根據(jù)操作系統(tǒng)約定分配空間;如有必要就自動(dòng)擴(kuò)展表空間。但是,不能從 SMS 表空間刪除容器,并且僅限于將新的容器添加到分區(qū)的數(shù)據(jù)庫(kù)。前一節(jié)中所說明的那三個(gè)缺省表空間都是 SMS。
  • 數(shù)據(jù)庫(kù)管理的空間(DMS):DMS 表空間是由 DB2 管理的。可以將容器定義成文件(在創(chuàng)建表空間時(shí)將把給定的大小全部分配給它們)或設(shè)備。分配方法和操作系統(tǒng)允許多少 I/O,DB2 就可以管理多少 I/O??梢酝ㄟ^使用 ALTER TABLESPACE 命令來擴(kuò)展容器。還可以釋放未使用的那部分 DMS 容器(從 Version 8 開始)。 當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)時(shí),將創(chuàng)建三個(gè)表空間(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)。

根據(jù)表空間的用途和管理方式將它們分類。根據(jù)用途有五種不同的表空間:

  • 目錄表空間:每個(gè)數(shù)據(jù)庫(kù)只有一個(gè)目錄表空間,它是在發(fā)出 CREATE DATABASE 命令時(shí)創(chuàng)建的。目錄表空間被 DB2 命名為 SYSCATSPACE,它保存了系統(tǒng)目錄表。總是在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)創(chuàng)建該表空間。
  • 常規(guī)表空間:常規(guī)表空間保存表數(shù)據(jù)和索引。它還可以保存諸如大對(duì)象(Large Object,LOB)之類的長(zhǎng)數(shù)據(jù),除非這些數(shù)據(jù)顯式地存儲(chǔ)在長(zhǎng)表空間中。如果某些表空間是數(shù)據(jù)庫(kù)管理的空間(Database Managed Space,DMS),則可以將表及其索引分別放到單獨(dú)的常規(guī)表空間中。我們將在本文后面定義 DMS 和系統(tǒng)管理的空間(System Managed Space,SMS)之間的區(qū)別。每個(gè)數(shù)據(jù)庫(kù)中必須至少有一個(gè)常規(guī)表空間。創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定該表空間的默認(rèn)名為 USERSPACE1。
  • 長(zhǎng)表空間: 長(zhǎng)表空間用于存儲(chǔ)長(zhǎng)型或 LOB 表列,它們必須駐留在 DMS 表空間中。它們還可以存儲(chǔ)結(jié)構(gòu)化類型的列或索引數(shù)據(jù)。如果沒有定義長(zhǎng)表空間,那么將把 LOB 存儲(chǔ)在常規(guī)表空間中。長(zhǎng)表空間是可選的,缺省情況不會(huì)創(chuàng)建長(zhǎng)表空間。
  • 系統(tǒng)臨時(shí)表空間: 系統(tǒng)臨時(shí)表空間用于存儲(chǔ)執(zhí)行 SQL 操作(比如排序、重組表、創(chuàng)建索引和連接表)期間所需的內(nèi)部臨時(shí)數(shù)據(jù)。每個(gè)數(shù)據(jù)庫(kù)必須至少有一個(gè)系統(tǒng)臨時(shí)表空間。隨數(shù)據(jù)庫(kù)創(chuàng)建的系統(tǒng)臨時(shí)表空間的默認(rèn)名為 TEMPSPACE1。
  • 用戶臨時(shí)表空間: 用戶臨時(shí)表空間存儲(chǔ)已聲明的全局臨時(shí)表。創(chuàng)建數(shù)據(jù)庫(kù)時(shí)不存在用戶臨時(shí)表空間。至少應(yīng)當(dāng)創(chuàng)建一個(gè)用戶臨時(shí)表空間以允許定義已聲明的臨時(shí)表。用戶臨時(shí)表空間是可選的,默認(rèn)情況下不會(huì)創(chuàng)建用戶臨時(shí)表空間。

     

圖 8 顯示了一個(gè)具有五個(gè)表空間的數(shù)據(jù)庫(kù):一個(gè)目錄表空間、兩個(gè)常規(guī)表空間、一個(gè)長(zhǎng)表空間和一個(gè)系統(tǒng)臨時(shí)表空間。沒有創(chuàng)建用戶臨時(shí)表空間。其中有 8 個(gè)容器。


圖 8. 具有表空間和緩沖池的 DB2 數(shù)據(jù)庫(kù)
具有表空間和緩沖池的 DB2 數(shù)據(jù)庫(kù)

可使用以下命令創(chuàng)建此類數(shù)據(jù)庫(kù)和表空間。

create database sample
                                                        connect to sample
                                                        create bufferpool BP1 size 1000 pagesize 4 K
                                                        create bufferpool BP2 size 1000 pagesize 8 K
                                                        create bufferpool BP3 size 1000 pagesize 32 K
                                                        create regular tablespace userspace1 pagesize 8 k managed by database
                                                        using (file 'C1U1' 1000, file 'C2U1' 1000) bufferpool BP2
                                                        create regular tablespace userspace2 pagesize 4 k managed by database
                                                        using (file 'C1U2' 1000) bufferpool BP1
                                                        create large tablespace largespace1 pagesize 32 k managed by database
                                                        using (file 'C1L1' 1000, file 'C2L1' 1000, file 'C3L1' 1000) bufferpool BP3
                                                        create temporary tablespace systemp1 pagesize 32 k managed by system
                                                        using (path '/db1/C1T1') bufferpool BP3
                                                        

使用上面這組命令將創(chuàng)建緩沖池和表空間。現(xiàn)在來看一下 DB2 中的容器和緩沖池是什么。

容器

每個(gè)表空間都有一個(gè)或多個(gè)容器。重申一次,您可以認(rèn)為容器是孩子,而表空間是其父母。每個(gè)容器只能屬于一個(gè)表空間,但是一個(gè)表空間可以擁有許多容器??梢詫⑷萜魈砑拥?DMS 表空間,或者從 DMS 表空間中刪除容器,而且可以更改容器的大小。只能將容器添加到某個(gè)分區(qū)中分區(qū)數(shù)據(jù)庫(kù)上的 SMS 表空間,在添加之前該分區(qū)還未給表空間分配容器。添加新的容器時(shí),將啟動(dòng)一個(gè)自動(dòng)的重新均衡操作以便將數(shù)據(jù)分布到所有容器上。要了解更多關(guān)于容器和重新均衡操作的內(nèi)容,請(qǐng)參考 DB2 9 Information Center。

緩沖池

一個(gè)緩沖池是與單個(gè)數(shù)據(jù)庫(kù)相關(guān)聯(lián)的,可以被多個(gè)表空間使用。當(dāng)考慮將緩沖池用于一個(gè)或多個(gè)表空間時(shí),必須保證表空間頁大小和緩沖池頁面大小對(duì)于緩沖池所 “服務(wù)” 的所有表空間而言都是一樣的。一個(gè)表空間只能使用一個(gè)緩沖池。創(chuàng)建數(shù)據(jù)庫(kù)時(shí),會(huì)創(chuàng)建一個(gè)名為 IBMDEFAULTBP 的默認(rèn)緩沖池,所有的表空間都共享該緩沖池??梢允褂?CREATE BUFFERPOOL 語句添加更多的緩沖池。大型緩沖池還會(huì)對(duì)查詢優(yōu)化產(chǎn)生影響,因?yàn)楦嗟墓ぷ骺稍趦?nèi)存中完成。要了解更多關(guān)于緩沖池的內(nèi)容,請(qǐng)參考 DB2 9 Information Center。

IDS 中的數(shù)據(jù)庫(kù)創(chuàng)建

現(xiàn)在您已經(jīng)了解了 DB2 中數(shù)據(jù)庫(kù)是如何創(chuàng)建的以及 如何對(duì)表空間進(jìn)行管理,現(xiàn)在來看一下在 IDS 中 dbspaces 和數(shù)據(jù)庫(kù)是如何彼此相關(guān)的。

dbspaces

dbspace 是由一個(gè)或多個(gè)塊組成的邏輯單元。Chunk 表示存儲(chǔ)的物理單元。數(shù)據(jù)庫(kù)服務(wù)器可以使用成熟的(cooked)文件或原始(raw)設(shè)備來存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)庫(kù)是被創(chuàng)建在常規(guī) dbspace 中的,因此在創(chuàng)建數(shù)據(jù)庫(kù)之前必須已經(jīng)存在一個(gè)常規(guī) dbspace。默認(rèn)的常規(guī) dbspace 稱為 rootdbs,它是在創(chuàng)建 IDS 實(shí)例時(shí)被創(chuàng)建的。除非 create database 命令中說明要使用另一個(gè)常規(guī) dbspace,否則將使用默認(rèn) dbspace 創(chuàng)建數(shù)據(jù)庫(kù)。系統(tǒng)目錄表和數(shù)據(jù)庫(kù)本身位于同一個(gè) dbspace 中。同一個(gè) Informix 實(shí)例中的任何其他數(shù)據(jù)庫(kù)都可以使用所有的 dbspace。IDS 具有大量的 dbspace,下面將做簡(jiǎn)要介紹。

  • 常規(guī) dbspace: 常規(guī) dbspace 用來存放數(shù)據(jù)庫(kù)對(duì)象,如系統(tǒng)目錄表、用戶表和索引。
  • 臨時(shí) dbspace:臨時(shí) dbspace 屬于常規(guī) dbspace,數(shù)據(jù)庫(kù)服務(wù)器在存儲(chǔ)臨時(shí)表時(shí)將使用到它。當(dāng)使用臨時(shí) Blobspace 時(shí),數(shù)據(jù)庫(kù)服務(wù)器并不記錄日志。由于這樣做減少了 I/O 和檢查點(diǎn)操作因而改善了數(shù)據(jù)庫(kù)性能。
  • Blobspaces: blobspace 是由一個(gè)或多個(gè)塊組成的邏輯單元。blobspace 用來存儲(chǔ)文本和字節(jié)數(shù)據(jù)。數(shù)據(jù)庫(kù)服務(wù)器將存儲(chǔ)在 blobspace 中的數(shù)據(jù)直接寫入到磁盤。不會(huì)對(duì) blobspace 對(duì)象記錄日志。
  • Sbspaces: sbspace 是由一個(gè)或多個(gè)塊組成的邏輯單元。sbspace 用來存儲(chǔ)智能大對(duì)象。智能大對(duì)象由字符大對(duì)象(CLOBs)和二進(jìn)制大對(duì)象(BLOBs)數(shù)據(jù)類型組成??梢詫?duì)存儲(chǔ)在 sbspace 中的數(shù)據(jù)庫(kù)對(duì)象記錄日志。使用 Informix API(一個(gè)應(yīng)用程序)可以存儲(chǔ)或檢索存儲(chǔ)在 sbspace 中的智能 LOB。
  • Extspaces: extspace 是與一個(gè)字符串相關(guān)聯(lián)的邏輯名稱,該字符串表示外部數(shù)據(jù)的位置。在對(duì)數(shù)據(jù)庫(kù)進(jìn)行開發(fā)時(shí)(擴(kuò)展 IDS 的功能)將用到 extspace。可以使用相應(yīng)的用戶定義的訪問方法來訪問 extspace 中的內(nèi)容。

     

舉例來說,如果運(yùn)行下面的數(shù)據(jù)定義語言(data definition language,DDL),首先會(huì)創(chuàng)建 2 GB 大小的 dbspace Dbdbspace,然后在 dbspace Dbdbspace 中創(chuàng)建數(shù)據(jù)庫(kù) sampledb。sampledb 的數(shù)據(jù)庫(kù)目錄表位于 Dbdbspace 中。

Onspaces -c   -d  Dbdbspace -p /work/database/chunk1 -o 0 -s 20480000
                                                        where,
                                                        c  For Creating Dbspace
                                                        p  path name for the physical unit
                                                        o  offset in K bytes
                                                        s  size of dbspace in Kbytes
                                                        a  for adding chunk to a dbspace
                                                        Create database sampledb in Dbdbspace;


圖 9. 具有 Dbspace 和塊的 IDS 數(shù)據(jù)庫(kù)
具有 Dbspace 和塊的 IDS 數(shù)據(jù)庫(kù)

如圖 9 所示,數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)庫(kù)對(duì)象可以被存儲(chǔ)在一些 dbspace 中。這個(gè)例子具有一個(gè)默認(rèn)的 Root Dbspace、三個(gè)稱為 Root Dbspace 的常規(guī) dbspace、User Dbspace、Index Dbspace、一個(gè) Temporary Dbspace、一個(gè) Blobspace、一個(gè)智能 LOB sbspace 和一個(gè) extspace。上面這個(gè)例子中 Database 1 中的數(shù)據(jù)庫(kù)對(duì)象跨越了所有可用的 dbspace。表和索引可以駐留在不同的 dbspace 中。為了更好地理解,一個(gè)常規(guī) dbspace 被命名為 Index Dbspace,您可以選擇在這個(gè) dbspace 中創(chuàng)建索引。您還可以選擇在根 dbspace 中創(chuàng)建數(shù)據(jù)庫(kù)(盡管這不是一個(gè)很好的應(yīng)用)。在圖 9 中,Database 2 駐留在 Root Dbspace 中。

下面的代碼將向 userDbSpace 添加一個(gè)塊: Onspaces -a -d UserdbSpace -p /work/database/chunk3 -o 0 -s 4096000 . 關(guān)于 dbspaces 和向 dbspaces 添加塊(chunk)的更多信息,請(qǐng)參見 IDS v10.0 Information Center







備份和恢復(fù)

DB2 中的備份是一個(gè)數(shù)據(jù)庫(kù)以及控制信息的副本,可以用于恢復(fù)錯(cuò)誤事件。數(shù)據(jù)庫(kù)備份可以最小化數(shù)據(jù)的損失并使您能夠使用恢復(fù)進(jìn)程從備份副本中重新構(gòu)建錯(cuò)誤的數(shù)據(jù)庫(kù)。IDS 中的備份復(fù)制了一個(gè)或多個(gè) dbspace、blobspace、spspace 和 Informix 實(shí)例的邏輯日志和物理日志。

在 DB2 中使用 BACKUP 命令進(jìn)行數(shù)據(jù)庫(kù)備份:

BACKUP DATABASE sample ONLINE TO /dev/rdir1, /dev/rdir2
                                                        

在 IDS 中,有兩種名為 ontape 和 onbar 的實(shí)用工具。

ontape 實(shí)用工具是 Informix 備份和恢復(fù)實(shí)用工具的較老版本,后者被設(shè)計(jì)為和兩個(gè)本地連接備份設(shè)備一起使用(一個(gè)用于實(shí)例備份,另一個(gè)用于邏輯日志備份)。從 IDS v10 開始,ontape 操作可以被定向到標(biāo)準(zhǔn)輸入或標(biāo)準(zhǔn)輸出設(shè)備( “standard in” 或 “standard out”,STDIO),因此為很多選項(xiàng)提供了支持。

onbar 備份實(shí)用工具有兩個(gè)組件:onbar API 和存儲(chǔ)管理器。Onbar API 是由 X/Open Organization 定義的 Open Systems Backup Services Data Movement (XBSA) API 客戶機(jī)組件的 Informix 實(shí)現(xiàn)。

ontape 實(shí)用工具可以串行化備份 dbspace,而 onbar 可以并行備份 dbspace。


圖 10. IDS 中的備份實(shí)用工具
IDS 中的備份實(shí)用工具

日志類型

  • 活動(dòng)日志:只要滿足下列兩個(gè)條件中的任意一個(gè),則可認(rèn)為日志是活動(dòng)的:
    • 該日志包含該日志包含沒有提交或回滾的事務(wù)
    • 該日志包含已提交但尚未刷新到數(shù)據(jù)庫(kù)磁盤(外部化)的事務(wù)。
  • 聯(lián)機(jī)歸檔日志; 這些日志包含已提交并外部化的事務(wù)的信息。和活動(dòng)日志位于同一目錄。
  • 脫機(jī)歸檔日志: 歸檔日志從活動(dòng)日志所在目錄移動(dòng)到其他目錄或媒體中即為脫機(jī)歸檔日志??梢允止せ蜃詣?dòng)進(jìn)行移動(dòng)。

除了上面討論的日志,IDS 還把日志分類為邏輯日志和物理日志??墒鞘褂?DB2 中的 LOGPRIMARY 和 LOGSECONDARY 數(shù)據(jù)庫(kù)配置參數(shù)定義日志文件的數(shù)量。在 IDS 中,可以通過設(shè)置配置參數(shù) LOGFILES 完成此操作。和 DB2 中的 LOGSECONDARY 相似,IDS 提供了動(dòng)態(tài)記錄日志選項(xiàng)。可以通過設(shè)置配置參數(shù) DYNAMIC_LOGS 啟用該選擇。要了解更多關(guān)于日志類型的內(nèi)容,請(qǐng)參考 參考資料 一節(jié)中的 DB2 和 IDS 信息中心。

日志機(jī)制

IDS 和 DB2 具有相似的日志機(jī)制。下面將簡(jiǎn)要介紹這兩種類型的機(jī)制:
  • 循環(huán)日志: 循環(huán)日志是 DB2 的默認(rèn)日志模式。正如其名字所暗示的一樣,這種類型的日志可以以循環(huán)模式重用日志。例如,如果具有 4 種主要日志,將按照這樣的順序使用:Log #1、Log #2、Log #3、Log #4、Log #1、Log #2 等等。只要日志中包含關(guān)于已經(jīng)提交并外部化到數(shù)據(jù)庫(kù)磁盤上的事務(wù)的信息,就可以以循環(huán)日志的形式重用該日志。換而言之,如果日志仍然是活動(dòng)日志,那么就不能重用該日志。

    在 IDS 中,始終以循環(huán)的方式使用邏輯文件。然而,可以對(duì)這些邏輯文件進(jìn)行備份以用于日后恢復(fù)??梢詫⑦壿嬑募浞莸?LTAPEDEV 配置參數(shù)中說明的路徑。

  • 歸檔日志: 當(dāng)使用歸檔日志時(shí),將對(duì)日志進(jìn)行歸檔(保留)操作。然而在循環(huán)日志中將改寫被提交和外部化的事務(wù),以及為它們保留的歸檔日志。例如,如果具有 4 個(gè)主要日志,可能按這樣的順序使用:Log #1、Log #2、Log #3、Log #4、(如果 Log #1 的所有事務(wù)都被提交并外部化,那么將對(duì) Log #1 歸檔)、Log #5、(如果 Log #2 的所有事務(wù)都被提交并外部化,那么將對(duì) Log #2 歸檔)、Log #6 等等。通過將數(shù)據(jù)庫(kù)配置參數(shù) LOGRETAIN 設(shè)置為 ON 可啟用歸檔日志。

    IDS 將日志文件歸檔到包內(nèi),配置參數(shù) LTAPEDEV 為之指定一個(gè)有效的路徑或設(shè)備。如果該參數(shù)值為空,則表示日志沒有被歸檔。

備份機(jī)制

現(xiàn)在了解一下 DB2 和 IDS 中不同類型的備份機(jī)制。

  • 離線備份: 離線備份是 DB2 9 和 IDS 中最簡(jiǎn)單的一種備份形式。如果使用離線備份,當(dāng)數(shù)據(jù)庫(kù)離線時(shí),將對(duì)整個(gè)數(shù)據(jù)庫(kù)備份。換而言之,在離線備份期間,不允許用戶訪問數(shù)據(jù)庫(kù)。在 IDS 的離線備份中,數(shù)據(jù)庫(kù)服務(wù)器切換到 Quiescent 模式。在此模式下,用戶不能夠訪問數(shù)據(jù)庫(kù)服務(wù)器。下面給出了在 DB2 中進(jìn)行離線備份,以及在 IDS 中的 Quiescent 模式下備份的例子:

    In DB2(windows)
                                                                backup database sample to c:\backup
                                                                In IDS
                                                                ontape -s -L 0 (Level 0 backup)
                                                                onbar -b -L 0
                                                                

  • 在線備份: 即使應(yīng)用程序和數(shù)據(jù)庫(kù)處于連接狀態(tài),也可進(jìn)行在線備份。為了實(shí)現(xiàn)在線備份,在 DB2 中必須啟用歸檔日志。在 IDS 中,即使在循環(huán)日志機(jī)制下,對(duì)在線備份也沒有嚴(yán)格的要求。除了對(duì)數(shù)據(jù)庫(kù)備份外,在 DB2 中還可進(jìn)行表空間級(jí)的備份,在 IDS 中可以進(jìn)行 dbspace 備份。在 IDS 中,對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份被稱為 0 級(jí)備份,而在 DB2 中稱為完全備份。在 DB2 中,完全備份應(yīng)該是一個(gè)離線備份。而在 IDS 中,甚至在在線狀態(tài)下也可進(jìn)行 0 級(jí)備份。

    In DB2
                                                                backup database sample tablespace( syscatspace, userspace1,
    userspace2 ) online to /db2tbsp/backup1, /db2tbsp/backup2 In IDs onbar -b rootdbs, userdbs1, userdbs5

  • 增量備份: DB2 和 IDS 都支持增量備份。增量備份就是對(duì)最近一次數(shù)據(jù)庫(kù)全備份以來所有修改了的數(shù)據(jù)進(jìn)行備份。在 IDS 中,增量備份又被稱作 1 級(jí)備份。

    圖 11. 增量備份
    增量備份


    In DB2
                                                                (Sun) backup db mydb from c:\backup
                                                                (Mon) backup db mydb online incremental from c:\backup
                                                                (Tue) backup db mydb online incremental from c:\backup
                                                                In IDS
                                                                ontape -s -L 1 (Level 1 backup)
                                                                onbar -b -L 1
                                                                

  • Delta 備份: Delta 備份是對(duì)最近一次成功的備份(包括全備份、增量備份和 delta 備份)以來被修改了的數(shù)據(jù)的備份。delta 備份也被稱為 2 級(jí)備份。

    Figure 12. Delta 備份
    Delta 備份


    In DB2
                                                                (Sun) backup db mydb from c:\backup
                                                                (Mon) backup db mydb online incremental delta from c:\backup
                                                                (Tue) backup db mydb online incremental delta from c:\backup
                                                                In IDS
                                                                ontape -s -L 2 (Level 2 backup)
                                                                onbar -b -L 2
                                                                

數(shù)據(jù)庫(kù)恢復(fù)

在 DB2 中,可以使用恢復(fù)實(shí)用工具進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。在 IDS 中,可以使用 ontape 或 onbar 實(shí)用工具以及 -r 選項(xiàng)?;謴?fù)實(shí)用工具使用一個(gè)備份文件作為輸入,并使用一個(gè)新的或現(xiàn)有的數(shù)據(jù)庫(kù)作為輸出。在 DB2 和 IDS 中,可以對(duì)完整的數(shù)據(jù)庫(kù)進(jìn)行恢復(fù),也可以對(duì)表空間(在 IDS 中為 dbspace )進(jìn)行恢復(fù)。在 IDS 中,可以恢復(fù) dbspace、物理日志和邏輯日志。要省略從備份中恢復(fù)的邏輯文件,需要使用 -p 選項(xiàng)。如果只對(duì)邏輯文件進(jìn)行恢復(fù),需要使用 -l 選項(xiàng)。IDS 和 DB2 都允許增量恢復(fù)。

下面給出了完全恢復(fù)、增量恢復(fù)、表級(jí)和 dbspace 級(jí)恢復(fù)的例子。


完全恢復(fù)
                                                        In DB2
                                                        restore database sample from c:\backup taken at 20060314131259
                                                        without rolling forward without prompting
                                                        In IDS
                                                        ontape -r
                                                        onbar -r
                                                        


增量恢復(fù)
In DB2
                                                        restore database mydb incremental taken at 20060414131259
                                                        In IDS
                                                        In case of ontape, it would prompt the user to insert any 
incremental or delta backups to be restored.


表空間和 dbspace 級(jí)恢復(fù)
In DB2
                                                        restore database sample tablespace( mytblspace1 ) online from
                                                        /db2tbsp/backup1, /db2tbsp/backup2
                                                        In IDS
                                                        Onbar  -r   userdbs1,  userdbs5
                                                        

數(shù)據(jù)庫(kù)前滾

前滾 命令允許指定時(shí)間點(diǎn)(point-in-time)恢復(fù)。這意味著該命令可以使您遍歷 DB2 日志,并且可以重做/取消日志中記錄的操作,從而恢復(fù)到特定的時(shí)間點(diǎn)。在 IDS 中要做到這一點(diǎn),可通過使用 -p 選項(xiàng)只對(duì) dbspace 和物理日志進(jìn)行恢復(fù)。然后再使用 -l 選項(xiàng)進(jìn)行其他恢復(fù)。注意這些操作需要按照一定順序進(jìn)行。如果使用 onbar 實(shí)用工具,可以回滾到某個(gè)時(shí)間點(diǎn)或任何一個(gè)特定的日志。在 IDS 中,onbar 實(shí)用程序支持指定時(shí)間點(diǎn)回滾恢復(fù)和指定日志恢復(fù)。

In DB2
                                                        rollforward  database sample to end of logs and complete
                                                        rollforward  database sample to timestamp and complete
                                                        rollforward  database sample to timestamp using local time and complete
                                                        In IDS
                                                        onbar   -r    -t     time
                                                        onbar   -r    -l     logid
                                                        







安全特性

DB2 和 IDS 安全模型都由兩個(gè)主要組件組成:身份驗(yàn)證和授權(quán)。


圖 13. DB2 安全模型
DB2 安全模型

DB2 身份驗(yàn)證

身份驗(yàn)證就是使用一種安全機(jī)制驗(yàn)證所提供的用戶 ID 和密碼的過程。用戶和組的身份驗(yàn)證是使用一種 DB2 之外的設(shè)施進(jìn)行管理的,例如操作系統(tǒng)、域控制器或者 Kerberos 安全系統(tǒng),這種身份驗(yàn)證方式與其他數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)如 Oracle 和 SQL Server 不同,在其他數(shù)據(jù)庫(kù)管理系統(tǒng)中,數(shù)據(jù)庫(kù)本身以及諸如操作系統(tǒng)等外部設(shè)施對(duì)用戶帳戶進(jìn)行定義和身份驗(yàn)證。在連接時(shí)如果沒有提供用戶憑證,DB2 將使用用來登錄到發(fā)出請(qǐng)求的工作站的用戶 ID 和密碼。

默認(rèn)情況下,建立一個(gè)實(shí)例,它將使用用于所有實(shí)例級(jí)和連接級(jí)請(qǐng)求的一種身份驗(yàn)證類型。數(shù)據(jù)庫(kù)管理器配置參數(shù) AUTHENTICATION 對(duì)此做了指定。Version 9 中引入了數(shù)據(jù)庫(kù)管理器參數(shù) SRVCON_AUTH。該參數(shù)專門處理與數(shù)據(jù)庫(kù)的連接。所以,舉例來說,如果在 DBM CFG 中具有如下設(shè)置:

DB2 GET DBM CFG
                                                        Server Connection Authentication (SRVCON_AUTH) = KERBEROS
                                                        Database manager authentication (AUTHENTICATION) = SERVER_ENCRYPT
                                                        

連接到該實(shí)例將使用 SERVER_ENCRYPT。然而,與數(shù)據(jù)庫(kù)的連接將使用 KERBEROS 身份驗(yàn)證。如果沒有為服務(wù)器正確地初始化 KERBEROS,但是提供了一個(gè)有效的用戶 ID 和密碼,那么將允許用戶連接到實(shí)例,但是不允許連接到數(shù)據(jù)庫(kù)。

下面的表總結(jié)了 DB2 中可以的身份驗(yàn)證類型。在一個(gè)客戶機(jī)-網(wǎng)關(guān)-主機(jī)環(huán)境中,這些身份驗(yàn)證選項(xiàng)是在客戶機(jī)和網(wǎng)關(guān)上設(shè)置的,而不是在主機(jī)上設(shè)置的。


表 3. DB2 中的身份驗(yàn)證類型
類型 描述
SERVER 在服務(wù)器上進(jìn)行身份驗(yàn)證。
SERVER_ENCRYPT 在服務(wù)器上進(jìn)行身份驗(yàn)證。密碼在發(fā)送到服務(wù)器之前先在客戶機(jī)上進(jìn)行加密。
CLIENT 在客戶機(jī)上進(jìn)行身份驗(yàn)證。
*KERBEROS Kerberos 安全軟件執(zhí)行身份驗(yàn)證。
*KRB_SERVER_ENCRYPT 如果客戶機(jī)設(shè)置為 KERBEROS,則使用 Kerberos 安全軟件執(zhí)行身份驗(yàn)證。否則使用 SERVER_ENCRYPT 進(jìn)行身份驗(yàn)證。
DATA_ENCRYPT 在服務(wù)器上進(jìn)行身份驗(yàn)證。服務(wù)器接收加密過的用戶 ID 和密碼,并且對(duì)數(shù)據(jù)進(jìn)行加密。除了還要對(duì)數(shù)據(jù)進(jìn)行加密外,其操作和 SERVER_ENCRYPT 相同。
DATA_ENCRYPT_CMP 這種身份驗(yàn)證方式和 DATA_ENCRYPT 相同,唯一不同的是這種模式允許不支持 DATA_ENCRYPT 模式的較老用戶使用 SERVER_ENCRYPT 身份驗(yàn)證進(jìn)行連接。這種情況下數(shù)據(jù)沒有被加密。如果客戶機(jī)連接支持 DATA_ENCRYPT ,將強(qiáng)制加密數(shù)據(jù),并且不會(huì)退回到 SERVER_ENCRYPT 認(rèn)證。這種認(rèn)證類型只在服務(wù)器的數(shù)據(jù)庫(kù)管理器配置文件中是有效的,當(dāng)在客戶機(jī)或網(wǎng)關(guān)實(shí)例的 CATALOG DATABASE 命令中使用是無效的。
GSSPLUGIN 可以使用一個(gè)外部 GSS-API 插件對(duì)身份驗(yàn)證進(jìn)行控制。
GSS_SERVER_ENCRYPT 可以使用一個(gè)外部 GSS-API 插件對(duì)身份驗(yàn)證進(jìn)行控制。如果客戶機(jī)不支持服務(wù)器的 GSS-API 插件中的一種,將使用 SERVER_ENCRYPT 身份驗(yàn)證類型。
*這些設(shè)置只有在 Windows 2000、AIX、Solaris 和 Linux 操作系統(tǒng)下是有效的。

IDS 安全機(jī)制


圖 14. IDS 安全模型


IDS 認(rèn)證

在 IDS 中,有 4 個(gè)用于身份驗(yàn)證的選項(xiàng),如圖 4 所示。下面對(duì)每一種選項(xiàng)進(jìn)行了簡(jiǎn)要說明:
表 4. IDS 安全機(jī)制
方法 屬性 說明
OS 用戶 ID 不進(jìn)行加密,使用 OS 密碼查找 IDS 始終使用這種基本的身份驗(yàn)證。這種技術(shù)為每一個(gè)連接到 DBMS 的用戶使用 OS 用戶 ID 和密碼。用戶或應(yīng)用程序提交用戶 ID 和密碼,DBMS 使用一個(gè) OS 庫(kù)函數(shù)驗(yàn)證密碼。如果 OS 函數(shù)表明 OS 的用戶 ID 和密碼集中沒有該用戶 ID 和/或密碼,那么將拒絕用戶連接到 DBMS。
密碼加密 使用 OS 用戶 ID ,但是在傳輸過程對(duì)密碼進(jìn)行加密。 IDS 支持從應(yīng)用程序向數(shù)據(jù)庫(kù)服務(wù)器傳輸密碼時(shí)對(duì)密碼進(jìn)行加密。要實(shí)現(xiàn)此目的,需要對(duì)客戶機(jī)和服務(wù)器各自的 SQLHOSTS 文件或注冊(cè)表以及 conscm.cfg 文件配置密碼加密。
Pluggable Authentication Model (PAM) 用戶提供的身份驗(yàn)證方法 使用 PAM 的身份驗(yàn)證使您能夠編寫自己的方法來對(duì)用戶進(jìn)行認(rèn)證??梢詮膩碜缘谌降目捎媚K中選擇 PAM。組成 PAM 的庫(kù)文件通常駐留在 $INFORMIXDIR/lib 中,PAM 的配置文件位于 $INFORMIXDIR/etc 中。concsm.cfg 文件都對(duì)這些文件進(jìn)行了引用。
Lightweight Directory Access Protocol (LDAP) 用戶提供的對(duì) LDAP 目錄的訪問 LDAP 使您能夠在 LDAP 服務(wù)器上集中管理用戶帳戶。使用 LDAP 將不再需要在數(shù)據(jù)庫(kù)服務(wù)器機(jī)器上創(chuàng)建用戶帳戶。

權(quán)限和特權(quán)

授權(quán)是這樣一個(gè)過程:它為提供的用戶 ID 確定關(guān)于特定數(shù)據(jù)庫(kù)對(duì)象和操作的訪問和權(quán)限信息。DB2 在內(nèi)部存儲(chǔ)和維護(hù)用戶和組的授權(quán)信息。每次提交一個(gè)命令時(shí),DB2 將執(zhí)行授權(quán)檢查以確保您具有正確的權(quán)限集來執(zhí)行操作。

DB2 使用五種不同級(jí)別的權(quán)限來控制用戶對(duì)實(shí)例或數(shù)據(jù)庫(kù)執(zhí)行管理和維護(hù)操作。這五種級(jí)別是:

  • System Administrator (SYSADM) 權(quán)限
  • System Control (SYSCTRL) 權(quán)限
  • System Control (SYSCTRL) 權(quán)限
  • System Maintenance (SYSMAINT) 權(quán)限
  • Database Administrator (DBADM) 權(quán)限
  • Load (LOAD) 權(quán)限

特權(quán)是用來將在特定數(shù)據(jù)庫(kù)資源上執(zhí)行某種操作的權(quán)利授予單個(gè)用戶或組用戶。DB2 中,有兩種不同的特權(quán)類型:數(shù)據(jù)庫(kù)特權(quán)和對(duì)象特權(quán)。

數(shù)據(jù)庫(kù)特權(quán)應(yīng)用在整個(gè)數(shù)據(jù)庫(kù)中,對(duì)于大多數(shù)用戶來說,其行為如同在第二個(gè)安全檢查點(diǎn)通過驗(yàn)證的標(biāo)識(shí),在提供對(duì)數(shù)據(jù)的訪問之前必須要清除該檢查點(diǎn)。和應(yīng)用于整體數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)特權(quán)不同,對(duì)象特權(quán)只應(yīng)用在數(shù)據(jù)庫(kù)內(nèi)特定的對(duì)象。這些對(duì)象包括模式、表空間、表、索引、視圖、包、例程、序列、服務(wù)器和昵稱。

IDS 不同于 DB2,它包含預(yù)定義的權(quán)限。在數(shù)據(jù)庫(kù)級(jí)別上授予這些權(quán)限。如果一個(gè)用戶被授予這些權(quán)限中的一種,該用戶將獲得一組特權(quán)。下面列出了這些權(quán)限。

  • 連接特權(quán)
  • 資源特權(quán)
  • DBA 特權(quán)

DBA 特權(quán)將授予所以資源特權(quán)以及維護(hù)數(shù)據(jù)庫(kù)系統(tǒng)所需的所有其他特權(quán)。這和 DB2 中的 DBADM 權(quán)限有些相像。這是 IDS 中數(shù)據(jù)庫(kù)訪問的最高特權(quán)級(jí)別。

為易于理解,下面列出了其中一些 DB2 和 IDS 特權(quán)。想要了解更詳盡的列表,請(qǐng)參考 DB2 Information Center。
表 5. 特權(quán)

DB2 IDS Remarks
CONNECT 連接特權(quán) 允許用戶訪問數(shù)據(jù)庫(kù)。要對(duì)數(shù)據(jù)庫(kù)進(jìn)行任何訪問,用戶至少要有一個(gè)連接特權(quán)。
CREATETAB
CREATE_EXTERNAL_ROUTINE
CREATEIN
資源特權(quán) 授權(quán)所有連接特權(quán),并且允許用戶創(chuàng)建新表、索引和過程。
CREATETAB
LBAC
表級(jí)和列級(jí)特權(quán) 可以訪問特定表并且數(shù)據(jù)庫(kù)管理員可以控制表內(nèi)的列。表的創(chuàng)建者或具有資源特權(quán)或 DBA 權(quán)限的用戶可以創(chuàng)建表。數(shù)據(jù)庫(kù)管理員可以授權(quán)所有不同表級(jí)的特權(quán),如選擇、插入、刪除、更新、索引、更改、引用等。

除此之外,IDS 還允許用戶創(chuàng)建特定于數(shù)據(jù)庫(kù)的用戶組,稱之為 角色。當(dāng)創(chuàng)建角色后,將用戶分配到該角色并進(jìn)一步授予角色權(quán)限。在 IDS 中,在數(shù)據(jù)庫(kù)級(jí)別定義角色。







鎖機(jī)制

為改善并發(fā)性,DB2 和 IDS 結(jié)合使用了鎖和隔離級(jí)別。

鎖是一種用來將數(shù)據(jù)資源與單個(gè)事務(wù)關(guān)聯(lián)起來的機(jī)制,其用途是當(dāng)某個(gè)資源與擁有它的事務(wù)關(guān)聯(lián)在一起時(shí),控制其它事務(wù)如何與該資源交互。(我們稱與被鎖定的資源關(guān)聯(lián)的事務(wù)持有或擁有該鎖。)DB2 數(shù)據(jù)庫(kù)管理器和 IDS 用鎖來禁止事務(wù)訪問其它事務(wù)寫入的未提交數(shù)據(jù)(除非使用了未提交的讀隔離級(jí)別),并禁止其它事務(wù)在擁有鎖的事務(wù)使用限制性隔離級(jí)別時(shí)對(duì)這些行進(jìn)行更新。事務(wù)一旦獲取了鎖,則在終止之前,就一直持有該鎖;該事務(wù)終止時(shí)釋放鎖,其它事務(wù)就可以使用被解鎖的數(shù)據(jù)資源了。

在 DB2 中,鎖可以放置在數(shù)據(jù)庫(kù)對(duì)象如表空間、表和行中。IDS 允許應(yīng)用程序開發(fā)人員將鎖放在不同的對(duì)象上,如數(shù)據(jù)庫(kù)、表、頁或行、以及索引。

鎖類型

鎖具有幾種不同的類型,下面列出了其中一些。要了解更多關(guān)于鎖的內(nèi)容,請(qǐng)參考 參考資料 一節(jié)中的 DB2 和 Informix 信息中心。

  • Intent None (IN)
  • Exclusive (X)
  • Update (U)
  • Super Exclusive (Z)

鎖屬性

所有鎖具有如下的基本屬性:

  • 對(duì)象: 標(biāo)識(shí)被鎖定的數(shù)據(jù)資源。DB2 數(shù)據(jù)庫(kù)管理器在需要時(shí)鎖定數(shù)據(jù)資源(如表空間、表和行)。
  • 大?。?/strong> 指定要鎖定的數(shù)據(jù)資源部分的物理大小。鎖并不總是必須控制整個(gè)數(shù) 據(jù)資源。例如,DB2 數(shù)據(jù)庫(kù)管理器可以讓應(yīng)用程序獨(dú)占地控制表中的特定行,而不是 讓該應(yīng)用程序獨(dú)占地控制整個(gè)表。
  • 持續(xù)時(shí)間: 指定了鎖被持有的時(shí)間長(zhǎng)度。事務(wù)的隔離級(jí)別通??刂屏随i 的持續(xù)時(shí)間。
  • 方式: 指定了鎖的擁有者所允許的訪問類型,以及對(duì)鎖定數(shù)據(jù)資源的并發(fā)用 戶許可的訪問類型。這個(gè)屬性通常稱為鎖狀態(tài)。

鎖定升級(jí)

所有的鎖都要求存儲(chǔ)空間。因?yàn)榭捎玫拇鎯?chǔ)空間不是無限制的,DB2 數(shù)據(jù)庫(kù)管理器必須限制可用于鎖的空間數(shù)量??梢酝ㄟ^ maxlock 數(shù)據(jù)庫(kù)配置參數(shù)實(shí)現(xiàn)此目的。在 IDS 中,可以通過設(shè)置 LOCKS 配置參數(shù)進(jìn)行控制。為了防止某個(gè)特定的數(shù)據(jù)庫(kù)代理超出設(shè)置的鎖空間限制,當(dāng)獲得大量鎖時(shí),將自動(dòng)執(zhí)行稱為鎖定升級(jí)的進(jìn)程。IDS 還提供了一個(gè)選項(xiàng)動(dòng)態(tài)增加獲得的鎖的數(shù)量。







工具和實(shí)用程序

包含在 DB2 和 IDS 中的工具提供了既省時(shí)又可減少錯(cuò)誤發(fā)生的圖形化界面。大量的工具可以幫助 DBA 和應(yīng)用程序開發(fā)人員完成各自的任務(wù)。這里只重點(diǎn)介紹其中一些工具:常見的數(shù)據(jù)移動(dòng)和數(shù)據(jù)維護(hù)實(shí)用工具。

DB2 Control Center

Control Center 是用來管理 DB2 服務(wù)器的。它為您提供了實(shí)例和數(shù)據(jù)庫(kù)的概觀,并允許您在 DB2 中執(zhí)行大部分的數(shù)據(jù)庫(kù)操作。正如在圖 15 中看到的一樣,左面的面板(對(duì)象窗格)展示了本地和遠(yuǎn)程系統(tǒng)中的三種結(jié)構(gòu),右面的面板(內(nèi)容窗格)提供了所選的具體項(xiàng)的更多詳細(xì)內(nèi)容。


圖 15. DB2 Control Center
DB2 Control Center

Informix Server Administrator (ISA)

ISA 是基于 Web 的跨平臺(tái)的數(shù)據(jù)庫(kù)服務(wù)器管理工具,用于監(jiān)視多個(gè) Informix 服務(wù)器。ISA 可以用來檢查 Informix 實(shí)例配置、顯示 Informix 實(shí)例的存儲(chǔ)信息、顯示 VP 的信息,還可以用來添加和創(chuàng)建 dbspace,以及監(jiān)視 Informix 服務(wù)器的性能。


圖 16. Informix Server Administrator (ISA)
Informix Server Administrator (ISA)

更多工具

下面將對(duì)其他工具進(jìn)行簡(jiǎn)要說明:

  • Configuration Assistant: 一個(gè) DB2 工具,可用于建立客戶機(jī)/服務(wù)器之間的通信并維護(hù)注冊(cè)表變量,除此之外它還可以執(zhí)行更多工作。
  • Configuration Advisor: 對(duì)數(shù)據(jù)庫(kù)進(jìn)行調(diào)整以獲得最佳性能是一個(gè)非常困難的任務(wù)。DB2 配置參數(shù)在決定性能方面起到非常重要的作用,它們可以影響數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)管理器的操作特性。DB2 Configuration Advisor 向?qū)閿?shù)據(jù)庫(kù)管理員提供了一個(gè)很好的起點(diǎn),對(duì)能夠做出改善的配置參數(shù)進(jìn)行初始設(shè)置(如果需要的話)。要了解該主題的更多文章,請(qǐng)參考 參考資料 一節(jié)。
  • Developer Workbench: DB2 9 引入了一種全新的免費(fèi)應(yīng)用程序開發(fā)工具,這個(gè)工具叫做 DB2 Developer Workbench (DWB),它是基于 Eclipse 框架的。DWB 是用于創(chuàng)建、編輯、調(diào)試、部署和測(cè)試 DB2 存儲(chǔ)過程和用戶定義函數(shù)的一站式中心。還可以使用 DWB 開發(fā) SQLJ 應(yīng)用程序,并創(chuàng)建、編輯和運(yùn)行 SQL 語句和 XML 查詢。
  • Onmonitor: IDS 中的 Onmonitor 實(shí)用工具可用來創(chuàng)建一個(gè) Informix 實(shí)例、修改或查看 Informix 實(shí)例的配置、創(chuàng)建 dbspaces、向 dbspace 添加塊以及檢查數(shù)據(jù)庫(kù)信息。
  • Onperf: IDS 中的圖形化監(jiān)視工具。Onperf 實(shí)用工具可以用來執(zhí)行例程系統(tǒng)監(jiān)視和性能監(jiān)視。

數(shù)據(jù)移動(dòng)實(shí)用工具

數(shù)據(jù)移動(dòng)工具是用來將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)移動(dòng)到另一個(gè)數(shù)據(jù)庫(kù),或?qū)?shù)據(jù)從一個(gè)環(huán)境中移動(dòng)到另一個(gè)環(huán)境(比如從測(cè)試環(huán)境移動(dòng)到生產(chǎn)環(huán)境)??梢詮囊粋€(gè)數(shù)據(jù)庫(kù)卸載或?qū)С鰯?shù)據(jù),然后再將數(shù)據(jù)導(dǎo)入或加載到另一個(gè)數(shù)據(jù)庫(kù)。DB2 的 EXPORT、IMPORT 和 LOADData 實(shí)用工具可用于此目的。在 IDS 中,這些工具分別被稱為 dbexport、dbimport 和 dbload 實(shí)用工具。

和上面提到的實(shí)用工具不同,DB2 提供了 db2move 實(shí)用工具來將全部數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)移動(dòng)到另一個(gè)數(shù)據(jù)庫(kù),db2look 實(shí)用工具可以生成 DDL 和統(tǒng)計(jì)信息。DDL 可被用來在另一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,從而復(fù)制數(shù)據(jù)庫(kù)結(jié)構(gòu)。和這些工具不同,IDS 提供了 High Performance Loader (HPL) 使用工具,可以從 ASCII 文件中卸載和加載數(shù)據(jù)。

數(shù)據(jù)維護(hù)實(shí)用工具

數(shù)據(jù)被物理地分布到跨多個(gè)表空間容器,這種方式對(duì)訪問數(shù)據(jù)的應(yīng)用程序執(zhí)行方式產(chǎn)生重大影響。DB2 和 IDS 使用目錄表中的統(tǒng)計(jì)信息來制定最佳訪問計(jì)劃。

要對(duì) DB2 中所有表或一組表的統(tǒng)計(jì)信息進(jìn)行更新,可使用 REORGCHK 命令以及 UPDATE STATISTICS 選項(xiàng)。在 IDS 中,使用 UPDATE STATISTICS 命令更新統(tǒng)計(jì)信息。

db2pd 和 onstat

DB2 提供了一個(gè)名為 db2pd 的實(shí)用工具,用于收集 DB2 實(shí)例和數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息。db2pd 提供了 20 多個(gè)選項(xiàng)顯示關(guān)于數(shù)據(jù)庫(kù)事務(wù)、表空間、表統(tǒng)計(jì)信息、動(dòng)態(tài) SQL、數(shù)據(jù)庫(kù)配置和其他很多數(shù)據(jù)庫(kù)細(xì)節(jié)的信息。單個(gè) db2pd 命令可以檢索多個(gè)領(lǐng)域的信息,并把結(jié)果保存到文件中。也可以在特定時(shí)期內(nèi)調(diào)用該工具一定的次數(shù),幫助您了解隨著時(shí)間的變化數(shù)據(jù)庫(kù)中的變動(dòng)情況。該工具可用于故障檢修、問題確定、數(shù)據(jù)庫(kù)監(jiān)控、性能調(diào)優(yōu)和幫助應(yīng)用程序的開發(fā)設(shè)計(jì)。要了解更多信息,請(qǐng)參考 參考資料 一節(jié)。

Onstat 是一個(gè) IDS 實(shí)用工具,當(dāng)執(zhí)行此命令時(shí),可讀取共享內(nèi)存結(jié)構(gòu)或片段并打印和 IDS 相關(guān)的診斷信息。onstat 實(shí)用工具可用來監(jiān)視 IDS 的性能,它提供了很多選項(xiàng)可用于查看磁盤讀寫操作、緩沖區(qū)使用情況的信息、用戶級(jí)監(jiān)視信息、CPU 統(tǒng)計(jì)信息、和 LRU 隊(duì)列相關(guān)的信息、網(wǎng)絡(luò)級(jí)統(tǒng)計(jì)信息,還可用于分析鎖。

結(jié)束語

本文簡(jiǎn)要討論了 DB2 和 Informix 的不同方面,例如編輯、體系結(jié)構(gòu)、進(jìn)程、內(nèi)存模型、數(shù)據(jù)庫(kù)和存儲(chǔ)模型。您還了解了如何在 DB2 和 Informix 中進(jìn)行備份和恢復(fù)?,F(xiàn)在您應(yīng)該能夠開始利用 RDBM 技能深入研究 DB2 和 Informix ,并對(duì)其進(jìn)行實(shí)驗(yàn)。建議您閱讀更多不同的文章并使用這兩種產(chǎn)品來獲得更深層次的知識(shí)。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多