首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 兩種連接模式 Type 1 vs Type 2 深度解析:從單一連接到分布式工作單元的實測演示

     編輯:DB2 教學

核心差異一覽

特性Type 1 (預設)Type 2
CONNECT 行為斷開現有連接,建立新連接保留現有連接,新增連接
單一事務只能操作一個資料庫可操作多個資料庫(分布式工作單元)
同一資料庫多連接不允許不允許
適用場景單庫應用跨庫事務、分布式應用

實測演示:CLP 環境下的 Type 2 行為

初始狀態:預設 Type 1

$ db2 list applications
Authid  Appl Name  Appl Handle  Appl Id                    DB Name   Agents
DB2ADMIN db2dasstm.exe 10 *LOCAL.DB2.00A180010035 DWCTRLDB 1
DB2ADMIN db2dasstm.exe 9  *LOCAL.DB2.00A180010034 DWCTRLDB 1
DB2ADMIN db2dasstm.exe 8  *LOCAL.DB2.00A180010020 DWCTRLDB 1

$ db2 connect to otherdb
Database Connection Information
Database server = DB2/NT 8.1.2
SQL authorization ID = DAVID
Local database alias = OTHERDB

$ db2 connect to sample
Database Connection Information
... Local database alias = SAMPLE

$ db2 list applications
Authid  Appl Name  Appl Handle  Appl Id                    DB Name   Agents
DAVID   db2bp.exe  22 *LOCAL.DB2.012480161735 SAMPLE 1
DB2ADMIN ... (DAS 連接保持不變)

觀察:第二個 connect to sample 導致第一個 otherdb 連接被斷開,應用程式清單僅剩 SAMPLE 連接。

切換至 Type 2 模式

$ db2 set client connect 2
DB20000I SET CLIENT 命令成功完成。

$ db2 connect to otherdb
... Local database alias = OTHERDB

$ db2 list applications
Authid  Appl Name  Appl Handle  Appl Id                    DB Name   Agents
DAVID   db2bp.exe  23 *LOCAL.DB2.012480161849 OTHERDB 1
DAVID   db2bp.exe  22 *LOCAL.DB2.012480161735 SAMPLE 1
DB2ADMIN ... (DAS 連接)

關鍵差異:兩個連接 同時存在(Handle 22 與 23),事務可跨庫操作。

Type 2 同步點選項

  • SYNCPOINT ONEPhase(預設):單階段提交,適合單資源管理器或非 XA 環境。
  • SYNCPOINT TWOPhase:兩階段提交(XA),需資源管理器支援,保證跨庫原子性。
  • SYNCPOINT NONE:無協調,應用自行管理,極少用。

切換當前作用連接

Type 2 下雖可持有多連接,但 SQL 執行僅針對最近建立的連接。切換方式:

SET CONNECTION <db_alias>;

程式設計介面(CLI/ODBC/JDBC)

  • CLI:SQLSetConnectAttr(hdbc, SQL_ATTR_CONNECTTYPE, (SQLPOINTER)SQL_CONNECT_TYPE_2, 0)
  • JDBC:DataSource.setClientConnectType(2)(JCC 驅動)或連線屬性 clientConnectType=2。

結語

Type 2 連接模式是實現分布式事務、跨資料庫操作的基石。理解其連接保留機制、同步點選項與連接切換語法,對開發跨庫應用至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved