欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
對具有數據庫分區功能的 DB2 UDB for Linux, UNIX and Windows Version 8 的生動(dòng)介紹(第 2 部分)


Raul F. Chong, 數據庫顧問(wèn), IBM 多倫多實(shí)驗室

2004 年 5 月 01 日

本文介紹了具有數據庫分區功能(Database Partitioning Feature,DPF)的 DB2 UDB for Linux, UNIX and Windows Version 8。本文是一個(gè)分為兩部分的系列中的第 2 部分。

簡(jiǎn)介

本系列文章的 第 1 部分 介紹了 Linux、UNIX? 和 Windows? 環(huán)境下的 IBM? DB2? Universal Database?(UDB)。其中還描述了一些實(shí)例、配置參數、連通性(connectivity)信息以及各種不同的數據庫對象。作為本系列的第 2 部分,本文介紹了 DB2 UDB Enterprise Server Edition (ESE) 上提供的數據庫分區功能(Database Partitioning Feature,DPF)。有了 DPF 功能,數據庫就具有可擴展性,從而可以添加新的機器,并將數據庫延伸到這些機器上。這意味著(zhù)可以從為數據庫新添加的每一臺機器上獲得更多的 CPU、更多的內存和更多的磁盤(pán)。具有 DPF 功能的 DB2 UDB ESE 是管理數據倉庫、數據挖掘和在線(xiàn)分析處理(online analytical processing,OLAP)等工作的理想選擇。它同樣適用于在線(xiàn)事務(wù)處理(online transaction processing,OLTP)工作。注意,啟用該功能并沒(méi)有什么技術(shù)需求,只需購買(mǎi)所需的許可就行了。從用戶(hù)的角度來(lái)看,可以像往常一樣連接到數據庫,然后發(fā)出查詢(xún),而不需要知道實(shí)際上數據庫是分布在數臺機器上的。

第 1 部分 討論的是單分區(single-partition)環(huán)境,不過(guò)其中的知識仍然適用于多分區(multi-partition)環(huán)境。所有的概念仍然是一樣的,不過(guò)我們需要指出一些實(shí)現上的不同之處。例如,我們將解釋配置文件、連通性信息等駐留在哪一臺機器上。我們還將介紹一些新的概念,比如分區(partition)、分區組(partition group)、協(xié)調節點(diǎn)(coordinator node)等等,這些概念都與單分區環(huán)境無(wú)關(guān)。

與第 1 部分一樣,這里也使用一些圖來(lái)可視化地解釋概念。在本文中,我用 DB2 這個(gè)詞來(lái)指代 DB2 Universal Database Enterprise Server Edition Version 8.1 for Linux, UNIX and Windows。我建議您將本文打印出來(lái),而不是在線(xiàn)閱讀,因為后面我會(huì )經(jīng)常引用到這些圖。首先我們會(huì )簡(jiǎn)要地解釋一些概念,在最后一節中,我們會(huì )將這些概念聯(lián)系到一個(gè)案例學(xué)習當中去。

注意:

DB2 UDB ESE with DPF 在版本 8 之前的版本是 DB2 UDB Enterprise Extended Edition (EEE)。





回頁(yè)首


數據庫分區

將一個(gè)數據庫分區時(shí),我們把它分成一些獨立的部分,每一部分都包含各自的數據、配置文件、索引和事務(wù)日志。每一部分就是一個(gè)數據庫分區??梢詫⒍鄠€(gè)分區分派到一臺物理機器上。有時(shí)候,這些分區也叫做邏輯分區(logical partition),這些邏輯分區共享機器上的資源。

單分區數據庫是一種只有一個(gè)分區的數據庫。在本系列的第 1 部分中,我們就談到了這種類(lèi)型的環(huán)境。

多分區數據庫(也稱(chēng)分區數據庫),是具有兩個(gè)或多個(gè)分區的數據庫。這種類(lèi)型的數據庫正是我們在本系列的當前部分所要討論的。取決于硬件環(huán)境,您可以按照幾種配置來(lái)對數據庫分區。圖 1 展示了物理分區的配置,每臺機器上有一個(gè)分區。


圖 1 - 每臺機器一個(gè)分區的數據庫分區配置

注意: 在圖 1 中,SMP 系統可以用單處理器(uniprocessor)系統代替。對于使用 DB2 with DPF 的環(huán)境來(lái)說(shuō),單處理器系統目前已經(jīng)相當少見(jiàn)了,因此在圖中我們將其省略了。

圖 2 展示了更多的多分區配置,其中每臺機器上有數個(gè)分區。


圖 2 - 每臺機器有數個(gè)分區的數據庫分區配置

注意: 在版本 8 之前,使用的是術(shù)語(yǔ)“節點(diǎn)(node)”,而不是“分區(partition)”。隨著(zhù)版本 8 的發(fā)行,仍然有一些概念、命令和消息在使用這個(gè)術(shù)語(yǔ)。還應注意的是, 節點(diǎn)目錄這一概念與 分區 的概念沒(méi)有絲毫的關(guān)系。

為了利用在 第 1 部分中所學(xué)到的知識,同時(shí)也為了想像出如何在 DPF 系統中拆分 DB2 環(huán)境,我們在圖 3 中展示了在本系列 第 1 部分 中那個(gè)圖的部分復制,并且還展示了它是如何被拆分成三個(gè)分區、每臺 SMP 機器一個(gè)分區的。這樣,我們就展示了如何將 DB2 環(huán)境從一種單分區多處理器配置(如圖 1 中的 I 所示)變?yōu)橐环N多分區多處理器配置(如圖 1 中的 II 所示)。

我們已經(jīng)將原始圖中的機器更改為使用 Linux 操作系統,而不是使用 Windows 操作系統。DPF 在 Linux/UNIX 環(huán)境中要比在 Windows 環(huán)境中更流行一些,因此我們主要討論 Linux/UNIX 這兩種平臺,不過(guò)大多數概念在 Windows 中是一樣的。


圖 3 - DB2 UDB ESE with DPF 中的 DB2 環(huán)境

從圖 3 中可以看出,DB2 環(huán)境是“劈開(kāi)”的,現在它駐留在三臺不同的多處理器機器上,這些機器運行著(zhù)相同的操作系統(對于我們這里的例子是 Linux),并且在相同的 fixpak 級別上運行著(zhù)相同的 DB2 版本(版本 8.1)。注意,這個(gè)圖的目的 不是說(shuō)明如何從一個(gè)單分區數據庫系統遷移到一個(gè)多分區數據庫系統,而是可視化地展示在一個(gè)多分區系統的 安裝上,文件將被放置在什么地方。

還應謹記的是,所有參與 DPF 環(huán)境的機器都必須通過(guò)某種通信設備互聯(lián)起來(lái),這種通信設備可以是使用 TCPIP 協(xié)議的網(wǎng)絡(luò )。每臺機器上都預留了一些 TCPIP 端口,用于這種“分區間(interpartition)”通信。例如,默認情況下,Linux 中的服務(wù)文件(/etc/services)在安裝之后會(huì )作如下更新(假設您選擇創(chuàng )建 db2inst1 實(shí)例):

                                    DB2_db2inst1		60000/tcp                                    DB2_db2inst1_1		60001/tcp                                    DB2_db2inst1_2		60002/tcp                                    DB2_db2inst1_END	60003/tcp                                    db2c_db2inst1		50000/tcp                                    

默認情況下,端口 60000 到 60003 被預留用于分區間通信。您需要根據當前配置的分區數目,以正確的條目號更新服務(wù)文件。

在只涉及同一臺機器內的分區時(shí),這些分區之間的通信仍然需要上述設置。只有在 AIX 中,才可以通過(guò)將 DB2 注冊變量 DB2_FORCE_FCM_BP 設置為 YES 來(lái)迫使分區間的通信在內存中執行。

默認情況下,端口 50000 用于連接到 db2inst1 實(shí)例。當客戶(hù)機需要連接到一個(gè) DPF 系統時(shí),它需要發(fā)出本系列 第 1 部分中描述到的,并且在 連通性快捷表一文中也作了解釋的一些命令。在這些命令中使用的主機名可以來(lái)自任何參與 DPF 環(huán)境的機器。除非在 CONNECT 語(yǔ)句中使用了 NODE 選項,否則所選擇的機器將成為協(xié)調節點(diǎn)。本文的后面會(huì )對協(xié)調節點(diǎn)的概念加以描述。

注意:對于參與 DPF 環(huán)境的每臺機器,服務(wù)文件中的 DB2 條目應該是相同的。




回頁(yè)首


節點(diǎn)配置文件(db2nodes.cfg)

db2nodes.cfg 文件包含關(guān)于數據庫分區和這些分區所在的服務(wù)器的信息,這些服務(wù)器將參與到一個(gè)實(shí)例中。在某些情況下,該文件的信息用于判定命令的作用域。本文后面的“在 DPF 環(huán)境中發(fā)出命令和 SQL 語(yǔ)句”一節將更詳細地討論命令的作用域。

圖 4 展示了 db2nodes.cfg 文件的一個(gè)例子,它用于 4 臺 UNIX 服務(wù)器的一個(gè)群集,其中每臺服務(wù)器上創(chuàng )建兩個(gè)分區(圖 2 中的選項 IV)。


圖 4 - 每臺服務(wù)器上 2 個(gè)邏輯分區的 4 臺 UNIX 服務(wù)器的群集所使用的 db2nodes.cfg

在 Linux/UNIX 環(huán)境中,對應于 db2nodes.cfg 文件的列是:

                                    Partition_number Hostname  Logical_Port netname  resourcename 

分區號(partition number),即 db2nodes.cfg 文件中的首列,表明了用于標識 DB2 內分區的數字。在這個(gè)圖中,我們可以看到總共有 8 個(gè)分區,分區號從 0 開(kāi)始。對分區的編號必須按照升序進(jìn)行,但是可以從任何數字開(kāi)始。數字之間允許有間隔。注意,編號的方式很重要,因為這在命令或 SQL 語(yǔ)句中要考慮到,在本文接下來(lái)的幾節中就可以看到這一點(diǎn)。

第 2 列是創(chuàng )建分區時(shí)所在服務(wù)器的 TCP/IP 主機名。

第 3 列是可選的,但是如果要在一臺服務(wù)器上創(chuàng )建不止一個(gè)分區,那么就必須使用這一列。該列指定服務(wù)器內分區的邏輯端口,它在一臺服務(wù)器內必須是惟一的。對于圖 4 中高亮顯示的例子,我們可以看到用于服務(wù)器“myserverb”的 db2nodes.cfg 條目與物理機器之間的映射。

第 4 列,即 netname,也是可選的,用于支持有多個(gè)活動(dòng) TCP/IP 接口、每個(gè)接口有其自己的主機名的主機。

第 5 列,即 resourcename,是可選的,僅適用于 AIX、HP-UX 和 Solaris 操作系統。它指定了分區應該從哪個(gè)操作系統資源開(kāi)始。

在 Windows 平臺上,還存在一個(gè)列,即計算機名(computer name),這一列包含一個(gè)分區所在機器的計算機名。這些列的順序是:

                                    Partition_number  Hostname	Computer_name    Logical_Port    netname                                    

db2nodes.cfg 文件必須作如下放置:

  • 在 Linux 和 UNIX 平臺上,放置在實(shí)例屬主的 SQLLIB 目錄下。
  • 在 Windows 平臺上,放置在 SQLLIB\\<Instance name> 目錄下。

 

在圖 3 中,它應該包括在 Linux3 機器中(在那里沒(méi)有顯示出,因為我們不想在那個(gè)圖中引入新的概念)。

在 Linux 和 UNIX 系統上,可以用任何 ASCII 編輯器或使用 DB2 命令來(lái)編輯 db2nodes.cfg 文件。在 Windows 上,只能使用 db2ncrt 和 db2ndrop 命令來(lái)創(chuàng )建和刪除數據庫分區,而不應該直接編輯 db2nodes.cfg 文件。

還可以使用 db2start 命令,分別通過(guò) add dbpartitionnum 和 drop dbpartitionnum 子句,向 DB2 實(shí)例和 db2nodes.cfg 文件添加分區或從中刪除分區。





回頁(yè)首


在 DPF 環(huán)境中安裝 DB2

在 DPF 環(huán)境中,需要在每臺參與進(jìn)來(lái)的機器上本地安裝 DB2。為了方便在其他機器上安裝 DB2,我們建議在第一臺機器上第一次安裝 DB2 的時(shí)候創(chuàng )建一個(gè)響應文件。創(chuàng )建好這個(gè)響應文件后,就可以將這個(gè)文件傳輸到其他機器上,并在每臺機器上使用命令 db2setup -r <response file> 來(lái)運行無(wú)人值守安裝。

安裝盤(pán)里的 DB2 安裝代碼也可以放在一個(gè)共享磁盤(pán)上,然后就可以從這個(gè)磁盤(pán)本地安裝 DB2。例如,在圖 3 中,假設 Linux2 機器上有一個(gè)磁盤(pán),我們已經(jīng)將安裝盤(pán)上的安裝代碼復制到了這個(gè)磁盤(pán)中。這個(gè)磁盤(pán)是供其他兩臺機器(Linux1 和 Linux3)共享的。接著(zhù),可以從每臺機器上執行 db2setup 命令來(lái)本地安裝 DB2,這樣每臺機器將擁有它自己的本地目錄 /opt/IBM/db2/V8.1,該目錄包含安裝的 DB2 二進(jìn)制文件。您可能會(huì )想,另一種方法是只在 Linux2 這臺機器上安裝 DB2,而將安裝的二進(jìn)制文件與 Linux1 和 Linux3 共享,但是這種配置是不受支持的。

注意:在 Linux 中,安裝的 DB2 二進(jìn)制文件是存放在本地目錄 /opt/IBM/db2/V8.1 中的。在其他平臺上,DB2 安裝在其他目錄中。應使用 db2level 命令確定安裝的代碼存放在本地機器的哪個(gè)地方。




回頁(yè)首


DPF 環(huán)境中的一個(gè)實(shí)例

分區這個(gè)概念只適用于數據庫這一級,而不適用于實(shí)例這一級。圖 3 可能會(huì )令您覺(jué)得實(shí)例也可以分區。然而,在 DPF 環(huán)境中的實(shí)際情況是,每臺機器上會(huì )單獨創(chuàng )建一個(gè)實(shí)例,這些實(shí)例都使用相同的特征:同樣的實(shí)例名,同樣的口令,以及共享的主目錄(home directory)。

在 Linux 和 UNIX 中,一個(gè)實(shí)例映射到一個(gè)操作系統用戶(hù),因此,當創(chuàng )建一個(gè)實(shí)例時(shí),該實(shí)例將擁有自己的主目錄。例如,在大多數安裝中,/home/<user name> 被用作主目錄。在 DPF 環(huán)境中,在每臺分區的機器上單獨創(chuàng )建的所有實(shí)例都必須使用相同的名稱(chēng)和口令。此外,對于所有實(shí)例,相應操作系統用戶(hù)的主目錄必須是相同的目錄,這個(gè)目錄必須在一個(gè)共享磁盤(pán)(NFS 共享)上創(chuàng )建。圖 5 展示了一個(gè)例子。


圖 5 - 分區環(huán)境中的一個(gè)實(shí)例

在圖 5 中,三臺 Linux 機器(Linux1、Linux2 和 Linux3)中的每一臺機器上都已創(chuàng )建了實(shí)例“myInst”。myInst 映射到一個(gè)有相同名稱(chēng)的操作系統用戶(hù),在此圖中它有一個(gè)主目錄 /db2home/myInst。注意,/db2home/myInst 這個(gè)目錄是由所有這三臺 Linux 機器共享的,因為它駐留在 Linux3 中的一個(gè)共享磁盤(pán)上。既然該實(shí)例的主目錄存放在 Linux3 機器本地,因而這臺機器被認為是 DB2 實(shí)例屬主機器。

圖 5 還顯示了 Database Administration Server (DAS) 用戶(hù) db2as 是在 DPF 環(huán)境中每臺分區的機器上本地創(chuàng )建的。不管機器上所包含的分區有多少個(gè),每臺物理機器上只能有一個(gè) DAS。DAS 用戶(hù)的主目錄不能放置在共享磁盤(pán)上。有一種選擇是,使用不同的用戶(hù) id 和口令在不同機器上創(chuàng )建 DAS。

注意:在 DPF 環(huán)境中的每臺分區機器上,應確保實(shí)例的口令是一致的,否則分區的系統看上去就像被掛起一樣,因為各分區之間不能相互交談。




回頁(yè)首


實(shí)例屬主機器

前面已指出,在 DPF 環(huán)境中,DB2 實(shí)例屬主機器是擁有物理地存有實(shí)例主目錄的磁盤(pán)的機器。圖 3 所示的實(shí)例屬主機器在主目錄中的 sqllib 目錄或該目錄的子目錄下有一些文件:

  • 實(shí)例級概要注冊表(instance level profile registry)。
  • 數據庫管理器配置文件(dbm cfg)。
  • System db 目錄。
  • Node 目錄。
  • DCS 目錄。

如果更改了這些文件中任何參數的值或連通性信息,那么參與該環(huán)境的所有機器都將能夠看到更改,因為只是更新了一個(gè)共享的文件。例如,如果在 Linux1 這臺機器上通過(guò)下面的命令將 dbm cfg 參數 intra_parallel 的值從 NO 改為 YES:

                                    db2 update dbm cfg using intra_parallel yes                                    

然后在 Linux2 機器上發(fā)出以下命令:

                                    db2 get dbm cfg                                    

那么就可以從 Linux2 看到更改生效了,因為只是更新了物理地存放在機器 Linux3 上單獨的一個(gè)共享文件。從任何分區發(fā)出這些命令都將影響在 db2nodes.cfg 文件中指定的所有分區。在 Linux/UNIX 環(huán)境中,您將收到來(lái)自每個(gè)分區的消息。 案例學(xué)習 這一節將演示如何執行上述操作。





回頁(yè)首


將一個(gè)數據庫分區

為了將數據庫“分區”,在每臺參與該環(huán)境的不同機器上以相同的名稱(chēng)本地創(chuàng )建一個(gè)目錄。以圖 1 為例,假設已經(jīng)在每臺機器的本地上創(chuàng )建了目錄 /data。然后,執行命令:

                                    create database MYDB2 on /data                                    

就會(huì )自動(dòng)建立下面的目錄結構:

                                    /data/<instance name>/NODExxxx/SQLyyyyy                                    

其中:

/data: 在 create database 命令中指定的目錄。在執行 create database 命令之前,這個(gè)目錄必須已經(jīng)存在。

<instance name>: 實(shí)例名。例如“myInst”。

NODExxxx: 用于區分將要使用哪個(gè)分區,其中“xxxx”代表在 db2nodes.cfg 文件中所指定的分區號,在本文的后面我們將討論這個(gè)文件。

SQLyyyyy: 用于標識數據庫,其中“yyyyy”代表一個(gè)號碼。如果在系統中只創(chuàng )建了一個(gè)數據庫,那么 yyyyy 就等于 00001,如果在系統中有 3 個(gè)數據庫,那么就有三個(gè)不同的目錄:SQL00001、SQL00002 和 SQL00003。為了將數據庫名映射到這些目錄上,可以使用以下命令查看本地數據庫目錄:

                                    db2 list db directory on /data 

在 SQLyyyyy 目錄中,存在一些用于表空間的子目錄,而這些子目錄中的文件又包含數據庫數據(假設所有表空間都被定義為 SMS)。圖 6 展示了分區的數據庫的一個(gè)可視化例子。

圖 6 - 在 /data 目錄中創(chuàng )建的一個(gè)分區的數據庫

如果沒(méi)有在 create database 命令中指定路徑,那么就會(huì )默認地在由 dbm cfg 參數 DFTDBPATH 指定的目錄中創(chuàng )建數據庫,這個(gè)目錄默認為實(shí)例屬主機器的主目錄。于是在此場(chǎng)景中創(chuàng )建的目錄結構如下:

                                    /db2home                                    /myInst                                    /NODE0000                                    /SQL00001                                    /NODE0001                                    /SQL00001                                    /NODE0002                                    /SQL00001                                    

這種分區并不是最佳的,因為所有數據庫數據都放在一個(gè)與其他機器共享的磁盤(pán)上。在 DPF 環(huán)境中,按照這種方法創(chuàng )建數據庫實(shí)際上違背了分區的本意。

注意:在創(chuàng )建數據庫之前,應更改 dbm cfg 參數 DFTDBPATH 的值,或確保在 create database 命令中包括了一個(gè)路徑。不管采用何種方式,DFTDBPATH 或路徑都應指向在 DPF 系統中所有參與的機器上以相同名稱(chēng)本地創(chuàng )建的一個(gè)目錄。這個(gè)目錄必須提前創(chuàng )建好。同樣,為了創(chuàng )建 SAMPLE 數據庫,需在命令中指定路徑,如下所示:db2sampl <path>




回頁(yè)首


DPF 環(huán)境中的配置文件

在前一節中我們已指出,實(shí)例級概要注冊表、數據庫管理器配置(dbm cfg)文件、系統數據庫目錄、節點(diǎn)目錄和 DCS 目錄都是實(shí)例屬主機器的一部分,它們是沒(méi)有被分區的。那么,對于其他配置文件,情況又是怎樣呢?

環(huán)境變量:
在分區的環(huán)境中,每臺參與進(jìn)來(lái)的機器都可以有不同的環(huán)境變量。

全局級概要注冊表(global level profile registry)變量:
存放在文件 default.env 中,該文件位于 /var 下的一個(gè)子目錄中。對于每臺機器,都存在該文件的一個(gè)不同的本地副本。

數據庫配置文件(db cfg):
db cfg 存放在文件 SQLDBCON 中,該文件位于所指的數據庫的相應目錄中。在分區的數據庫環(huán)境中,對于每個(gè)數據庫分區都存在一個(gè)單獨的 SQLDBCON 文件。

本地數據庫目錄:
本地數據庫目錄存放在所指的數據庫相應目錄下的 SQLDBDIR 文件中。本地數據庫目錄的目錄名與系統數據庫目錄相同,系統數據庫目錄存放在實(shí)例目錄中。對于每個(gè)數據庫分區都存在一個(gè)獨立的 SQLDBDIR 文件。

注意:全局級概要注冊表變量、數據庫配置文件參數以及本地數據庫目錄條目等的值在每個(gè)數據庫分區上可能不相同,不過(guò)我們還是建議這些值在所有分區上都應該是相同的。




回頁(yè)首


DPF 環(huán)境中的日志

每個(gè)數據庫分區都應該獨立地維護自己的日志。因此,每個(gè)分區中的 db cfg 參數“path to log files”不應該都指向共享磁盤(pán)目錄,而應該指向本地目錄。在每個(gè)分區中,默認的日志路徑將包括一個(gè) NODE000x 子目錄,作為該日志路徑的一部分。例如,在圖 3 中所示的 DPF 環(huán)境中,這個(gè)參數的值是:

                                    For Partition 0:  /datalogs/db2inst1/NODE0000/SQL00001/SQLOGDIR/                                    For Partition 1:  /datalogs/db2inst1/NODE0001/SQL00001/SQLOGDIR/                                    For Partition 2:  /datalogs/db2inst1/NODE0002/SQL00001/SQLOGDIR/                                    

如果要手動(dòng)地更新這個(gè)路徑,可以使用 db cfg 參數 NEWLOGPATH。在后面的小節中我們將看到,db2_all 這個(gè)命令只需執行一次就可以影響所有分區。





回頁(yè)首


編目分區

當創(chuàng )建一個(gè)數據庫時(shí),也會(huì )默認地創(chuàng )建一些表空間。其中有一個(gè)表空間就是 SYSCATSPACE,它包含了 DB2 編目(Catalog)。在 DPF 環(huán)境中,SYSCATSPACE 不能分區,但是它必須駐留在一個(gè)分區內,這個(gè)分區就是編目(Catalog)分區。發(fā)出 create database 命令時(shí)所在的那個(gè)分區就成為新數據庫的編目分區。所有對系統表的訪(fǎng)問(wèn)都必須經(jīng)過(guò)這個(gè)數據庫分區。

圖 3 展示了駐留在 Linux1 機器上的 SYSCATSPACE,create database 命令就是從這個(gè)分區發(fā)出的,因而它就成為編目分區。如果要為某個(gè)特定實(shí)例創(chuàng )建了多個(gè)數據庫,那么應確保從不同分區發(fā)出 create database 命令,以使得這些數據庫相應的編目表都創(chuàng )建在不同的分區上。

對于一個(gè)已有的數據庫,可以通過(guò)發(fā)出命令 list db directory 來(lái)確定哪個(gè)分區是編目分區。該命令的輸出就是每個(gè)條目的“Catalog database partition number”字段,該字段表明了給定數據庫的編目分區號。有一種選擇是,您可以從不同機器連接到數據庫,然后發(fā)出 list tablespaces show detail 命令。只有編目分區會(huì )顯示 SYSCATSPACE 表空間。





回頁(yè)首


分區組

分區組是一個(gè)邏輯層,它允許將一個(gè)或多個(gè)分區組成一組,以便對該組中的所有分區統一執行某些操作。一個(gè)數據庫分區可以同時(shí)屬于多個(gè)分區組。當創(chuàng )建一個(gè)數據庫時(shí),DB2 將創(chuàng )建三個(gè)默認的分區組,這三個(gè)組是不能刪除的:

  • IBMDEFAULTGROUP: 這是用于您所創(chuàng )建的任何表的默認分區組。它由在 db2nodes.cfg 中定義的所有數據庫分區組成。這個(gè)分區組不能修改。表空間 USERSPACE1 就是在這個(gè)分區組中創(chuàng )建的。
  • IBMTEMPGROUP: 所有系統臨時(shí)表將使用這個(gè)分區組。它也是由 db2nodes.cfg 中定義的所有數據庫分區組成的。表空間 TEMPSPACE1 就是在這個(gè)分區組中創(chuàng )建的。
  • IBMCATGROUP: 這個(gè)分區組包含編目表(表空間 SYSCATSPACE),因此,它只包括數據庫的編目分區。這個(gè)分區組不能修改。

要創(chuàng )建新的數據庫分區組,可以使用 create database partition group 語(yǔ)句。該語(yǔ)句將在數據庫中創(chuàng )建數據庫分區組,將指定的數據庫分區指派給這個(gè)分區組,然后在數據庫系統編目表中記錄下該分區組的定義。

例如,下列語(yǔ)句將在 db2nodes.cfg 文件中指定的所有分區上創(chuàng )建一個(gè)分區組“pgrpall”:

                                    create database partition group pgrpall on all dbpartitionnums                                    

要創(chuàng )建由分區 2 和分區 3 組成的數據庫分區組“pg23”,可以發(fā)出下面這個(gè)命令:

                                    create database partition group pg23 on dbpartitionnums (2,3)                                    

其他相關(guān)的分區組語(yǔ)句/命令有:

  • alter database partition group,該語(yǔ)句用于添加或刪除組中一個(gè)分區。
  • drop database partition group,該語(yǔ)句用于刪除一個(gè)分區組。
  • list database partition group,該命令用于列出所有分區組(IBMTEMPGROUP 不會(huì )列出)。




回頁(yè)首


DPF 環(huán)境中的緩沖池

在圖 3 中,我們展示了分布在不同分區上的緩沖池。解釋這個(gè)圖時(shí),對于緩沖池的解釋不同于其他對象,因為緩存在緩沖池中的數據不是像圖中隱含的那樣分區的。實(shí)際情況是,在 DPF 環(huán)境中,緩沖池可以根據不同的分區來(lái)量身定做。通過(guò)使用帶有 DATABASE PARTITION GROUP 子句的 CREATE BUFFERPOOL 語(yǔ)句,可以將一個(gè)緩沖池與一個(gè)給定的分區組關(guān)聯(lián)起來(lái)。這意味著(zhù),您可以靈活地為分區組中定義的特定分區來(lái)定義緩沖池。此外,在分區組中每個(gè)分區上緩沖池的大小也可以因需求而變化。例如,下面的語(yǔ)句將在分區組“pg1”中創(chuàng )建緩沖池“bpool_1”,我們假設這個(gè)分區組由分區 2、3 和 4 組成:

                                    CREATE BUFFERPOOL bpool_1 DATABASE PARTITION GROUP pg1 1                                    SIZE 10000                                    EXCEPT ON DBPARTITIONNUM (3 TO 4) SIZE 5000                                    

分區組 pg1 中的每個(gè)分區上將定義一個(gè)緩沖池 bpool_1,其大小是 10000。分區 3 和 4 將有一個(gè)大小為 5000 的緩沖池。我們使用一個(gè)類(lèi)比,假設在每個(gè)分區上單獨地發(fā)出 CREATE BUFFERPOOL 語(yǔ)句,其中每個(gè)分區上緩沖池的名稱(chēng)是一樣的,但是指定不同的大小,那么相應的語(yǔ)句就是:

                                    在分區 2 中:   CREATE BUFFERPOOL bpool_1 SIZE 10000                                    在分區 3 中:   CREATE BUFFERPOOL bpool_1 SIZE 5000                                    在分區 4 中:   CREATE BUFFERPOOL bpool_1 SIZE 5000                                    

注意,上述語(yǔ)句是為了讓類(lèi)比清晰化,執行以上所示的這些語(yǔ)句時(shí),系統將試圖使用所有分區創(chuàng )建一個(gè)緩沖池。這與使用 CREATE BUFFERPOOL 的 DATABASE PARTITION GROUP 子句有所不同。

此外,緩沖池可以與多個(gè)分區組相關(guān)聯(lián)。這意味著(zhù),緩沖池的定義將被應用于給定的相關(guān)分區組中的所有分區。





回頁(yè)首


DPF 環(huán)境中的表空間

可以在一些特定的分區中創(chuàng )建表空間,方法是將該表空間與一個(gè)給定的分區組相關(guān)聯(lián)。我們可以使用帶有 IN DATABASE PARTITION GROUP 子句的 CREATE TABLESPACE 語(yǔ)句來(lái)實(shí)現。該語(yǔ)句允許用戶(hù)靈活地指定使用哪些分區來(lái)實(shí)際地存儲他們的表。例如,語(yǔ)句:

                                    CREATE REGULAR TABLESPACE mytbls IN DATABASE PARTITION GROUP pg1                                    MANAGED BY SYSTEM USING (‘ data‘   BUFFERPOOL bpool_1                                    

創(chuàng )建表空間 mytbls,這個(gè)表空間橫跨分區 2、3 和 4(假設 pg1 是由這些分區組成的分區組)。此外,該表空間與前面一節中定義的緩沖池 bpool_1 相關(guān)聯(lián)。注意,如果提供了表空間和相關(guān)緩沖池之間有沖突的分區信息,那么該表空間的創(chuàng )建將會(huì )失敗。例如,如果緩沖池 bpool_1 是為分區 5 和 6 創(chuàng )建的,而表空間 mytbls 是為分區 2、3 和 4 創(chuàng )建的,那么在創(chuàng )建這個(gè)表空間時(shí)就會(huì )發(fā)生錯誤。





回頁(yè)首


協(xié)調節點(diǎn)

通常,對于每個(gè)數據庫連接,都會(huì )有一個(gè)相應的 DB2 代理來(lái)執行 DB2 工作。代理可以看作是一個(gè)進(jìn)程(在 Linux/UNIX 中)或者是一個(gè)線(xiàn)程(在 Windows 中),它代表應用程序執行 DB2 工作。有很多不同類(lèi)型的代理,其中有一種就是協(xié)調代理(coordinator agent)。協(xié)調代理與應用程序通信,接收請求和發(fā)送回復。它可以要么自己滿(mǎn)足請求,要么將工作委托給多個(gè)子代理來(lái)處理請求。

一個(gè)給定應用程序的協(xié)調節點(diǎn)就是協(xié)調代理所在的那個(gè)分區。協(xié)調節點(diǎn)也可以用 SET CLIENT CONNECT_NODE 命令來(lái)設置。當應用程序發(fā)出一個(gè)查詢(xún)時(shí),協(xié)調節點(diǎn)將這些數據庫請求的各部分發(fā)送給其他分區上的一些子代理,而來(lái)自其他分區的所有結果在發(fā)送回應用程序之前,又會(huì )在協(xié)調節點(diǎn)上合并起來(lái)。

任何分區都可能成為協(xié)調節點(diǎn),因此在圖 3 中,我們沒(méi)有專(zhuān)門(mén)指出哪一個(gè)分區作為協(xié)調節點(diǎn)。如果想知道更多關(guān)于 DB2 代理和 DB2 進(jìn)程模型的信息,請參閱本文參考資料那一節。





回頁(yè)首


在 DPF 環(huán)境中發(fā)出命令和 SQL 語(yǔ)句

假設有 20 臺物理機器,每臺機器上有 2 個(gè)分區。如果要向每臺物理機器或分區發(fā)出一條條的命令,那么任務(wù)量就比較可觀(guān)了。幸運的是,DB2 提供了兩個(gè)主命令,這兩個(gè)命令可以執行所有機器或分區上的其他命令:

rah:
當想要為每臺物理機器執行另一個(gè)命令時(shí),就可以使用這個(gè)命令。例如,如果想為 20 臺物理機器創(chuàng )建一個(gè)目錄,那么可以發(fā)出下面的命令:

                                    rah ")mkdir /tmp/$USER"                                    

其中 ‘ ‘ 字符表明在 $RAHENV 中指定的用戶(hù)概要表和文件是被限制長(cháng)度的。另外,還可以使用一些其他字符。要得到對這些字符的解釋?zhuān)梢园l(fā)出命令: rah ?

db2_all:
當想為每個(gè)數據庫分區執行另一個(gè)命令時(shí),就可以使用這個(gè)命令。例如,如果想更改每個(gè)分區中 SAMPLE 數據庫的 db cfg 參數 logfilsiz,就可以發(fā)出以下命令:

                                    db2_all ";db2 UPDATE DB CFG FOR sample USING LOGFILSIZ 500"                                    

如果分號(;)字符放在雙引號里面,那么請求就會(huì )在所有分區上同時(shí)運行。在 db2_all 命令中可以使用的字符與 rah 命令中可以使用的字符是一樣的。

對于 rah 或 db2_all,執行的命令幾乎可以是您在交互提示符下能輸入的任何東西,包括依次執行的一些命令。在 Linux 和 UNIX 平臺上,可以使用分號(;)隔開(kāi)多個(gè)命令。在 Windows 上,可以使用“和”符號(&)隔開(kāi)多個(gè)命令。但是在最后那個(gè)命令后面不要使用分隔符字符。

命令和 SQL 語(yǔ)句的作用域
一個(gè)命令(例如 db2 get db cfg,db2 list tablespaces 等等)的作用域受限于會(huì )話(huà)所依附的分區。
對于以 db2_all 打頭的命令,其作用域就是從 db2nodes.cfg 中可以得到的整個(gè)分區列表。
一條 SQL 語(yǔ)句的作用域是 db2nodes.cfg 文件中所有分區的集合(如果使用了 WHERE DBPARTITIONNUM= 謂詞則另當別論)。

使用數據庫分區表達式
在一個(gè)分了區的數據庫中,如果有不止一個(gè)數據庫分區駐留在同一臺物理機器上,則不能為這些數據庫分區指定相同的設備或路徑。您可以手動(dòng)地指定一個(gè)惟一的容器來(lái)存放每個(gè)數據庫分區,或者也可以在命令或語(yǔ)句中使用數據庫分區表達式,以根據 db2nodes.cfg 文件中的分區號生成一些值。下面的例子應該可以澄清這一概念:假設您發(fā)出了如下命令:

                                    CREATE TABLESPACE TS2                                    MANAGED BY DATABASE USING                                    (file ‘ data/TS2/container $N+100‘ 5000)                                    


在一個(gè)由 4 個(gè)數據庫分區組成的系統中,上述命令將創(chuàng )建下面幾個(gè)容器:
                                    /data/TS2/container100 - on DATABASE PARTITION 0                                    /data/TS2/container101 - on DATABASE PARTITION 1                                    /data/TS2/container102 - on DATABASE PARTITION 2                                    /data/TS2/container103 - on DATABASE PARTITION 3                                    

數據庫分區表達式是由參數 ‘ $N (注意在 $N 之前有一個(gè)空格)指定的。表 1 展示了用于創(chuàng )建容器的其他一些參數。運算符是從左往右計算的,其中 ‘ ‘ 代表模數(除法的余數)。假設我們所指的分區號是 3,在表 1 中“值”列顯示了解析數據庫分區表達式所得到的結果。

v

數據庫分區表達式

例子

[空格]$N

" $N"

3

[空格]$N+[數字]

" $N+500"

503

[空格]$N%[數字]

" $N%2"

1

[空格]$N+[數字]%[數字]

" $N+15%13"

5

[空格]$N%[數字]+[數字]

" $N%2+20"

21





回頁(yè)首


DB2NODE 環(huán)境變量

在本系列的 第 1 部分 中,我們談到了環(huán)境變量 DB2INSTANCE 用于在數據庫系統中不同實(shí)例之間進(jìn)行切換。環(huán)境變量 DB2NODE 的用途也是類(lèi)似的,但它是用于在 DPF 系統中的不同分區之間切換。默認情況下,對于給定服務(wù)器,活動(dòng)分區是在 db2nodes.cfg 文件中以邏輯端口 0 定義的那個(gè)分區。為了切換活動(dòng)分區,在 Windows 中可以使用 SET 命令,在 Linux/UNIX 中可以使用 export 命令。在更改了這個(gè)變量以后,應確保終止從任何分區到數據庫的所有連接,否則所作的更改就不能生效。

例如,使用圖 4 中所示的 db2nodes.cfg 文件,您有 4 臺服務(wù)器,每臺服務(wù)器上有 2 個(gè)邏輯分區。如果登錄到了服務(wù)器 myserverb,那么您所執行的任何命令將影響到分區 2,分區 2 也就是擁有邏輯端口 0 的那個(gè)分區,當然這個(gè)分區就是那臺服務(wù)器的活動(dòng)分區。如果要將分區 0 切換成活動(dòng)分區,那么在 Linux 系統中可以這樣來(lái)更改:

                                    DB2NODE=0                                    export DB2NODE                                    db2 terminate                                    

(僅僅是不存在來(lái)自任何分區的連接還不夠,還應確保發(fā)出了“terminate”命令)。

注意,分區 0 是在服務(wù)器 myservera 中。我們甚至可以使這個(gè)分區成為服務(wù)器 myserverb 的活動(dòng)分區。為了確定哪一個(gè)是活動(dòng)節點(diǎn),您可以在連接到一個(gè)數據庫后發(fā)出如下語(yǔ)句:

                                    db2 "values (current dbpartitionnum)"                                    





回頁(yè)首


分區圖和分區鍵

至此,您應該對如何設立一個(gè) DPF 環(huán)境有一個(gè)較好的理解了?,F在是時(shí)候來(lái)理解如何跨不同分區執行數據行的分發(fā)了。圖 7 展示了這種分發(fā)的一個(gè)例子。


圖 7 - 在 DPF 環(huán)境中分發(fā)數據行

分區圖(partitioning map)是內部生成的一個(gè)數組,它或者包含對應于多分區數據庫分區組的 4,096 個(gè)條目,或者包含對應于單分區數據庫分區組的一個(gè)條目。數據庫分區組里的分區號是以一種循環(huán)(round-robin)方式指定的。

分區鍵(partitioning key)是一個(gè)列(或者一組列),用于確定某一行特定數據所在的那個(gè)分區。分區鍵是在一個(gè)表上使用 CREATE TABLE 語(yǔ)句來(lái)定義的。

當創(chuàng )建或修改一個(gè)數據庫分區組時(shí),會(huì )有一個(gè)分區圖與之關(guān)聯(lián)。DB2 使用分區圖再加上分區鍵以及散列算法(hashing algorithm)來(lái)確定數據庫分區組中哪一個(gè)數據庫分區將存儲給定的一行數據。

對于圖 7 中的例子,假設我們已經(jīng)在分區 0、1、2 和 3 上定義了分區組“pg0123”。這樣將自動(dòng)創(chuàng )建一個(gè)關(guān)聯(lián)的分區圖,也就是擁有 4096 個(gè)條目的一個(gè)數組,這些條目包含值 0,1,2,3,0,1,2,3... (默認情況下,分區號以循環(huán)的方式存儲,不過(guò)這可以更改)。另外再假設已經(jīng)創(chuàng )建了表“mytable”,它有一個(gè)分區鍵,這個(gè)分區鍵由 col1、col2 和 col3 這三列組成。對于每一行,分區鍵各列的值被傳遞給散列算法,散列算法將返回從 0 到 4095 的一個(gè)輸出數字。這個(gè)數字對應于在分區圖數組中的一個(gè)條目,這個(gè)條目包含了這一行數據所在分區的分區號的值。在圖 5 中,如果散列算法返回了一個(gè)輸出值 7,那么這一行就是存放在分區 p1 中。





回頁(yè)首


案例學(xué)習

現在您已經(jīng)熟悉了 DPF,讓我們通過(guò)一個(gè)案例學(xué)習來(lái)回顧一下本文中的所有概念。

假設您的公司正在擴張,最近又買(mǎi)下了兩家其他的公司。由于數據大約是呈兩倍增長(cháng)的,您想知道當前的單分區 DB2 數據庫服務(wù)器是否能夠處理負載,還是需要 DB2 with DPF。由于您不大熟悉 DB2 with DPF,于是決定使用測試機器來(lái)先試一試:用于測試的有兩臺 SMP 機器,每臺機器有 4 個(gè)處理器,兩臺機器都運行 Linux 操作系統。之前的 DBA 已經(jīng)在這兩臺機器上安裝了 DB2 UDB ESE with DPF。他已經(jīng)離開(kāi)了公司,幸好他留下了如圖 8 所示的圖,其中有他的設計。


圖 8 - DB2 UDB ESE with DPF - 一個(gè)案例學(xué)習

圖 8 是物理和邏輯設計的結合。當您用自己的系統所具備的東西來(lái)核實(shí)這個(gè)圖的正確性時(shí),您注意到“mydb1”數據庫已經(jīng)被刪除,因此決定重建這個(gè)數據庫,作為一種實(shí)踐。而實(shí)例“db2inst1”以及其他數據庫仍在那里。下面是您所遵循的步驟:

1. 打開(kāi)兩個(gè) telnet 會(huì )話(huà),每臺 SMP 機器使用一個(gè)會(huì )話(huà)。從其中的一個(gè)會(huì )話(huà)中,發(fā)出 db2stop 命令,之后是 db2start 命令,如圖 9 所示。


圖 9 - db2stop 和 db2start

首先注意到的是,對于這兩個(gè)命令,沒(méi)有必要從每個(gè)分區上發(fā)出它們。只需從任何分區發(fā)出這兩個(gè)命令一次,就可以影響到所有分區。您還可以知道存在 4 個(gè)分區,因為您將從每個(gè)分區收到一條消息。

2. 接著(zhù),您想查看 db2nodes.cfg 文件,以檢查分區的配置。通過(guò)使用一些操作系統命令,確定實(shí)例 db2inst1 的主目錄,在這個(gè)例子中就是 /db2home/db2inst1。因而,文件 db2nodes.cfg 就存放在目錄 /db2home/db2inst1/sqllib 中。這個(gè)文件的內容如圖 10 所示。


圖 10 - db2nodes.cfg

圖 10 顯示了這里有 4 個(gè)分區,每臺服務(wù)器上兩個(gè)分區。服務(wù)器的主機名是 65658572 和 65658161。

3. 再接著(zhù),您想創(chuàng )建數據庫“mydb1”,但是想從分區 0 發(fā)出這個(gè)命令,因為您想讓這個(gè)分區成為編目分區。所以您從會(huì )話(huà)中發(fā)出語(yǔ)句 db2 "values (current dbpartitionnum)" 來(lái)確定哪個(gè)分區是當前的活動(dòng)分區。接下來(lái)再將環(huán)境變量 DB2NODE 改為 0。

就在創(chuàng )建這個(gè)數據庫之前,您還需檢查 dbm cfg 參數 DFTDBPATH 的值。這就是默認情況下這個(gè)數據庫創(chuàng )建時(shí)所在的路徑。您希望在所有分區中本地創(chuàng )建所指定的路徑(在這個(gè)例子中就是 /db2database ),以便將數據分布在這些分區中。通過(guò)使用操作系統命令,您證實(shí)了情況正是如此,于是繼續創(chuàng )建數據庫。如圖 11 所示。


圖 11 - 確定并切換活動(dòng)分區,然后創(chuàng )建數據庫

4. 為了證實(shí)分區 0 的確是編目分區,只需發(fā)出一條 list db directory 命令,然后在對應于“mydb1”數據庫的條目下找到“Catalog database partition number”字段。另外,也可以從每個(gè)分區上發(fā)出一條 list tablespaces 命令。應該只有編目分區才會(huì )列出 SYSCATSPACE 表空間。

5. 接下來(lái),您需要在分區 2 和 3 上創(chuàng )建分區組 pg23。圖 12 展示了如何完成這一任務(wù)。此外,該圖還展示了如何列出分區組。這個(gè)命令不能列出 IBMTEMPGROUP。


圖 12 - 創(chuàng )建分區組 pg23

6. 現在您想要創(chuàng )建和管理緩沖池。為了在分區組 pg23 上創(chuàng )建緩沖池 BP23,可以發(fā)出如下命令:

                                    db2 "create bufferpool BP23 database partition group pg23 size 500 "                                    

圖 13 展示了該條語(yǔ)句。這個(gè)圖還展示了如何使用 altER BUFFERPOOL 語(yǔ)句將此緩沖池與另一個(gè)分區組關(guān)聯(lián)起來(lái)。

為了列出緩沖池和相關(guān)聯(lián)的分區組,可以查詢(xún) syscat.bufferpools 視圖或者 sysibm.sysbufferpools 編目表。


圖 13 - 管理緩沖池

注意,一個(gè)緩沖池可以與任何分區組相關(guān)聯(lián)。緩沖池的定義將適用于分區組內的所有分區,如果需要的話(huà),可以為分區指定不同的大小。

7. 為了創(chuàng )建表空間 mytbls1,可發(fā)出如下命令:

                                    db2 "create tablespace mytbls1 in database partition group pg23                                    managed by system using (‘/data‘) bufferpool bp23"                                    

8. 為了在表空間 mytbls1 中創(chuàng )建帶有分區鍵 col1 和 col2 的表 table1,可發(fā)出如下命令:

                                    db2 "create table table1 (col1 int, col2 int, col3 char(10))                                    in mytbls1                                    partitioning key (col1, col2)"                                    

9. 對于 DPF 環(huán)境,創(chuàng )建索引 index1 時(shí)沒(méi)什么特別之處:

                                    db2 "create index index1 on table1 (col1, col2)"                                    

在每個(gè)分區上,都要為其數據行的子集構造該索引。

10. 接下來(lái),假設您想如圖 14 中所示的那樣,使用帶有 INTRA_PARALLEL YES 的命令 update dbm cfg 將參數 INTRA_PARALLEL 從 NO 更新為 YES。這里也應注意,與此同時(shí)還發(fā)出了 get dbm cfg 命令,只不過(guò)這個(gè)命令是從另一個(gè) telnet 會(huì )話(huà)中發(fā)出的。這個(gè)參數值的更新版本顯示在任何分區上,這說(shuō)明您更新的是一個(gè)共享文件。


圖 14 - Update dbm cfg

11. 然后,您想測試一下 db2_all 命令,以便只用一個(gè)命令就為所有分區更新 db cfg 文件。圖 15 展示了一個(gè)例子。在該圖中的第二個(gè)窗口顯示了在一個(gè)沒(méi)有執行過(guò) db2_all 命令的分區上執行 db2_all 命令之前和之后的 get db cfg。


圖 15 - 使用 db2_all 更新 db cfg

12. 您最后想測試的就是 rah 命令。圖 16 展示了一個(gè)使用 rah 創(chuàng )建子目錄的例子。


圖 16 - 使用 rah

您可以看到,rah 命令在每臺機器上工作,而 db2_all 命令則是在每個(gè)數據庫分區上工作。

大功告成!





回頁(yè)首


致謝

特別感謝 Bill Wilkins (IBM Content Management Partner Enablement 顧問(wèn))和 Scott Martin (IBM Innovation Center for Business Partners 顧問(wèn)),他們對本文進(jìn)行了技術(shù)性的審校。





參考資料






關(guān)于作者

Raul F. Chong 是 IBM 多倫多實(shí)驗室的數據庫顧問(wèn),主要與 IBM 業(yè)務(wù)伙伴進(jìn)行合作。Raul 已經(jīng)在 IBM 任職 5 年了,其中有 3 年是在 DB2 技術(shù)支持部(Technical Support)工作,另兩年擔任顧問(wèn),專(zhuān)門(mén)從事數據庫應用程序開(kāi)發(fā)和從其他 RDBMS 遷移到 DB2 方面的工作。








本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用 IBM DB2 Universal Database 的暫掛 I/O 分割鏡像
使用DB2look 重新創(chuàng )建優(yōu)化器訪(fǎng)問(wèn)計劃(1)
DB2和Oracle區別
分區的威力(翻譯)
DB2 最佳實(shí)踐: 關(guān)于數據庫存儲的最佳實(shí)踐
DB2 常用命令小結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久