正如將在下面的 排序堆 一節中所看到的,它的工作方式與排序堆的相同。
如果您是一名 DBA,就可能會使用 DB2 SQL Explain Tool(db2exfmt)來獲得對於 SQL 訪問計劃的理解。db2exfmt 工具用於格式化解釋表的內容。如果您在生產中使用 db2exfmt 查看一個訪問計劃的輸出,就會注意到計劃頂部的下列內容。(注意:這些參數通常是由 db2look 輸出中的 -f 和 -fd 選項所選擇的,除了 dbheap 設置之外)。
清單 3. db2exfmt 的示例輸出
Database Context:
----------------
Parallelism: None
CPU Speed: 6.523521e-07
Comm Speed: 100
Buffer Pool size: 50000
Sort Heap size: 10000
Database Heap size: 5120
Lock List size: 1000
Maximum Lock List: 10
Average Applications: 1
Locks Available: 7849
Package Context:
---------------
SQL Type: Dynamic
Optimization Level: 5
Blocking: Block All Cursors
Isolation Level: Cursor Stability
---------------- STATEMENT 1 SECTION 201 ----------------
QUERYN 1
QUERYTAG: CLP
Statement Type: Select
Updatable: No
Deletable: No
Query Degree: 1
如果您稍稍深入查看 db2exfmt 的輸出,就在訪問計劃之後,您將看到是否具有影響優化器計劃的注冊表設置。
注意:另外,遺憾的是,db2look -f 並非列出了所有相關的注冊表變量。您將需要添加那些遺漏的。一般來說,您測試系統上的注冊表變量設置應與生產系統上的相同,或者盡可能接近。
清單 4. 影響訪問計劃的注冊表設置
1) RETURN: (Return Result)
Cumulative Total Cost: 57.6764
Cumulative CPU Cost: 191909
Cumulative I/O Cost: 2
Cumulative Re-Total Cost: 5.37264
Cumulative Re-CPU Cost: 134316
Cumulative Re-I/O Cost: 0
Cumulative First Row Cost: 26.9726
Estimated Buffer pool Buffers: 2
Arguments:
---------
BLDLEVEL: (Build level)
DB2 v8.1.0.80 : s041221
ENVVAR : (Environment Variable)
DB2_ANTIJOIN=yes
DB2_INLIST_TO_NLJN = yes
STMTHEAP: (Statement heap size)
2048
創建數據定義語言(DDL)
下列 db2look 命令創建了 DDL 以復制所有數據庫對象,以及配置和統計信息。
db2look -d <dbname> -e -a -m -o db2look.out