管理:效能

| | |

比較 32 位元及 64 位元環境中的 DB2_FORCE_FCM_BP 登錄變數

|

當啟用 DB2_FORCE_FCM_BP 登錄變數時,可供其他登錄變數使用的共用記憶體區段將得更少, |特別是資料庫緩衝池。因此,啟用 DB2_FORCE_FCM_BP 登錄變數會減少資料庫緩衝池的大小上限。 |請注意,因為在 64 位元環境中有相當多的可用共用記憶體區段, |所以共用記憶體區段數目的減少應該只是 32 位元環境中的問題。

| | |

建立表格後建議的 RUNSTATS

|

第一次建立表格時,系統型錄統計值會設為 -1,以指出表格沒有統計值。 |DB2 UDB 會使用預設值進行 SQL 陳述式編譯及最佳化,直到收集了統計值。 |如果新值與預設值不一致,更新表格或索引統計值可能會失敗。 |因此,以手動方式更新表格或索引的統計值之前,請先對表格或索引執行 runstats 命令。

| | |

SQL1169N 的新原因碼

|

SQL 錯誤訊息 SQL1169N 有新的原因碼 5,指出解譯表格的直欄太小。 |

|| | |

MDC 表格的最佳化策略

|

下列文字是管理手冊:效能的第 6 章瞭解 SQL 編譯器的更新。

|

不管 DELETE 陳述式中是否有 WHERE 子句,即使 RID 索引是最佳化計劃一部份,還是可以使用 MDC 推出。 |因此,當列出必須符合以容許推出及使用更有效方法來刪除橫列的條件時,應該除去條件「除非 |DELETE 陳述式中沒有 WHERE 子句,否則最佳化工具不會選擇 RID 索引來尋找要刪除的橫列」。

|

另外,您將能夠看出 MDC 推出是否有效,因為 db2expln 輸出會顯示詞組「資料格刪除」。 |請注意,db2exfmt 不會顯示此資訊。

|

下列文字是附錄 A. DB2 登錄及環境變數的更新:

|

應該變更 DB2_MDC_ROLLOUT 的說明,如此就應該從清單除去條件「除非 |DELETE 陳述式中沒有 WHERE 子句,否則最佳化工具不會選擇 RID 索引來尋找要刪除的橫列」。

| | |

澄清 NEWLOGPATH、MIRRORPATH 及 OVERFLOWLOGPATH 配置參數說明

|

如果您在 DB2 UDB Enterprise Server Edition 環境中更新 newlogpath、 |mirrorpath 或 overflowlogpath 配置參數值,則不管系統上有多少個節點,節點號碼都將添加至路徑名稱。這同時適用於 DB2 UDB Enterprise Server Edition 環境中的單一分割區及多重分割區。

| | |

DB2_COLLECT_TS_REC_INFO 預設值

|

DB2_COLLECT_TS_REC_INFO 的預設值是 ON|在 DB2 UDB V 8.1 FixPak 7 中,DB2_COLLECT_TS_REC_INFO 登錄變數的預設值已變更為 ON|現行文件誤將此變數的預設值指定為 OFF。

主管程式公用程式

主管程式實例是由一個前端系統公用程式與一或多個常駐程式所組成。 您啟動的每一個主管程式實例都是資料庫管理程式實例所特有的。依預設,當您啟動主管程式時,主管程式常駐程式就會在分割的資料庫的每一個分割區上啟動。 不過,您可以指定在您要監督的單一分割區上啟動常駐程式。

註:
  1. 當主管程式作用中時,其 Snapshot 要求可能會影響資料庫管理程式效能。 若要增進效能,請增加主管程式啟動間隔,以減少其 CPU 使用量。
  2. 主管程式常駐程式會在執行時向本端實例發出 LOCAL Snapshot。 因此,任何包含 setlimit 子句的規則都會套用到來自 LOCAL Snapshot 輸出的輸出, 而不是來自 GLOBAL Snapshot 的聚集結果。

每一個主管程式常駐程式都會收集針對資料庫執行的應用程式的相關資訊。然後, 主管程式常駐程式會依據您在主管程式配置檔中針對這個資料庫指定的規則, 來檢查這個資訊。

選擇表格重組方法

當考慮就地表格重組 (而不是傳統表格重組) 時,請注意就地表格重組需要更多的日誌空間。

因為就地表格重組會記載其活動,以便在發生非預期的失敗之後, 可以進行回復,所以比傳統重組需要更多的日誌空間。

就地重組將需要相當於所重組表格七倍大小的日誌空間是有可能的。 所需的空間數量視移動的列數及表格上的索引數及索引大小而定。

建議:為 24x7 作業選擇就地表格重組,並將維護視窗縮至最小。

DMS 表格的線上表格重組容許啟動表格空間的線上備份作業,因為當發生重組時,表格位於這個表格空間。在截斷階段期間, 可能有重組作業的鎖定等待。

如需執行這些表格重組方法的詳細資訊,請參閱 REORG TABLE 語法說明。

FCM 記憶體的大型頁面支援 (AIX 5L 64 位元)

在 AIX(R) 5L 64 位元上,DB2_LARGE_PAGE_MEM 登錄變數現在支援關鍵字 FCM。

依預設,在 AIX(R) 5L(TM) 64 位元上,FCM 記憶體位於 DBMS 記憶體集。 不過,當啟用登錄變數 DB2_FORCE_FCM_BP 時,FCM 記憶體位於自己的記憶體集。 在 AIX 5L(TM) 64 位元上,DB2_LARGE_PAGE_MEM 支援指定 DBMS 記憶體集。 當 FCM 記憶體位於 DBMS 記憶體集,且已對該記憶體集啟用大型頁面支援時, FCM 記憶體將位於大型頁面。當 FCM 記憶體位於自己的記憶體集時, FCM 關鍵字必須新增到 DB2_LARGE_PAGE_MEM 登錄變數的值, 才能啟用 FCM 記憶體的大型頁面。

DB2_RESOURCE_POLICY 登錄變數接受新的元素

從 DB2 Universal Database(TM) (UDB) 8.2.2 版 (相當於 8.1 版 FixPak 9) 開始, DB2_RESOURCE_POLICY 登錄變數指定的配置檔可以接受 SCHEDULING_POLICY 元素。在部份平台上,您可以使用 SCHEDULING_POLICY 元素來選取:

登錄變數 DB2PRIORITIES 及 DB2NTPRICLASS 可以個別用來控制作業系統排程原則及設定 DB2 代理程式優先順序。

不過,資源原則配置檔中的 SCHEDULING_POLICY 元素規格提供了單一的地方, 來同時指定排程原則及相關的代理程式優先順序。

範例 1

藉由提高 db2 日誌寫出器及讀取器程序的優先順序來選取 AIX SCHED_FIFO2 排程原則:

<RESOURCE_POLICY>
   <SCHEDULING_POLICY>
      <POLICY_TYPE>SCHED_FIFO2</POLICY_TYPE>
      <PRIORITY_VALUE>60</PRIORITY_VALUE>

      <EDU_PRIORITY>
         <EDU_NAME>db2loggr</EDU_NAME>
         <PRIORITY_VALUE>56</PRIORITY_VALUE>
      </EDU_PRIORITY>

      <EDU_PRIORITY>
         <EDU_NAME>db2loggw</EDU_NAME>
         <PRIORITY_VALUE>56</PRIORITY_VALUE>
      </EDU_PRIORITY>
   </SCHEDULING_POLICY>
</RESOURCE_POLICY>
範例 2

置換 Windows 上的 DB2NTPRICLASS=H

<RESOURCE_POLICY>
   <SCHEDULING_POLICY>
      <POLICY_TYPE>HIGH_PRIORITY_CLASS</POLICY_TYPE>
   </SCHEDULING_POLICY>
</RESOURCE_POLICY>

新的系統環境變數 (Linux)

FixPak 8 中已新增 DB2_MAPPED_BASE 及 DB2DBMSADDR 系統環境變數。

這些登錄變數只建議進階使用者使用。

DB2_MAPPED_BASE

變數名稱
DB2_MAPPED_BASE
31 位元及 32 位元位址範圍 OR NULL (未設定) 中的 0 OR (十六進位) 虛擬位址
作業系統
Linux(TM) on x86 及 Linux on zSeries(R) (31 位元)
說明
您可以使用 DB2_MAPPED_BASE 登錄變數,來增加 DB2 Universal Database(TM) (UDB) 程序可用的連續虛擬位址空間數量,方法為重新定位特定程序的共用檔案庫的連接位址。 若要將 DB2(R) UDB 可用的資料庫共用記憶體數量增至最大,需要連續虛擬位址空間。 分送時,在程序檔案系統的程序識別目錄中併入 mapped_base 檔,這個變數才有效。

如果未設定這個變數,DB2 UDB 將嘗試把共用檔案庫重新定位至虛擬位址 0x10000000。

登錄變數也可以設為 31 與 32 位元位址空間範圍中的任何虛擬位址 (十六進位)。

註:
不正確的位址可能導致 DB2 UDB 發生嚴重的問題, 範圍從無法啟動 DB2 UDB 至無法連接資料庫。 不正確位址即是與記憶體中某個區域起衝突的位址,這個區域已在使用, 或預定給其他項目使用。若要處理這個問題,請使用下列命令, 將 DB2_MAPPED_BASE 變數重設為 NULL:
db2set DB2_MAPPED_BASE=

在 db2diag.log 檔中,下列訊息可能出現多次,因為每一個邏輯節點需要這個變更一次:

ADM0506I  DB2 has automatically updated the "mapped_base"
kernel parameter from "0x40000000(hex) 1073741824(dec)" to
the recommended value "0x10000000(hex) 268435456(dec)".

只有在順利設定登錄變數時,這則訊息才會出現,而且它將包括共用檔案庫重新定位的位址。

DB2DBMSADDR

變數名稱
DB2DBMSADDR
範圍 0x09000000 至 0xB0000000 中的虛擬位址,增量單位為 0x10000
作業系統
Linux on x86 及 Linux on zSeries (31 位元)
說明
以十六進位格式指定預設資料庫共用記憶體位址。
註:
不正確的位址可能導致 DB2 UDB 發生嚴重的問題,範圍從無法啟動 DB2 UDB 至無法連接資料庫。 不正確位址的範例即是與記憶體中某個區域起衝突的位址,這個區域已在使用, 或預定給其他項目使用。若要處理這個問題,請使用下列命令, 將 DB2DBMSADDR 變數重設為 NULL:
db2set DB2DBMSADDR=

這個變數可以結合 DB2_MAPPED_BASE 一起設定或單獨設定, 來調整 DB2 UDB 程序的位址空間佈置。這個變數會變更實例共用記憶體的位置, 從其在虛擬位址 0x20000000 的現行位置變更為新的給定值。

新的通訊登錄變數

8.2 版已新增 DB2TCP_CLIENT_RCVTIMEOUT 登錄變數。

表 12. 通訊變數
變數名稱 作業系統
說明
DB2TCP_CLIENT_RCVTIMEOUT 全部

預設值=0 (未設定)

值:0 至 32767 秒

指定在 TCP/IP 接收上等待資料的秒數。

如果未設定登錄變數或設為 0,將沒有逾時。如果在逾時值到期前, TCP/IP 接收隨著資料一起傳回,則應用程式將如同往常般處理。 如果在資料傳回前逾時值到期,連線將關閉。

註:
這個登錄變數僅適用於「DB2 用戶端」及「DB2 閘道」的用戶端。 它不適用於「DB2 伺服器」。

新的效能變數

8.2 版已新增 DB2_LARGE_PAGE_MEM 效能變數。

表 13. 效能變數
變數名稱 作業系統
說明
DB2_LARGE_PAGE_MEM

僅限 AIX(R) 5.x 64 位元

Linux

預設值=NULL

使用 * 表示所有適用的記憶體區域應該使用大型頁面記憶體, 或以逗號區隔的特定記憶體區域清單應該使用大型頁面記憶體。可用的範圍會隨著作業系統而有所不同。 在 AIX 5.x 64 位元上,可以指定下列範圍:DB、DBMS 或 PRIVATE。 在 Linux 上,則可以指定下列範圍:DB。

僅 DB2 Universal Database (UDB) for AIX 5L(TM) (64 位元版本) 及 DB2 UDB for Linux 才支援大型頁面記憶體。

DB2_LARGE_PAGE_MEM 登錄變數是用來在 AIX 5.x 或任何含適當核心程式支援的 Linux 架構上執行時, 啟用大型頁面支援。這個登錄變數放棄使用 DB2_LGPAGE_BP 登錄變數, 因為後者僅能用來啟用資料庫共用記憶體區域的大型頁面記憶體。 現在可以藉由設定 DB2_LARGE_PAGE_MEM=DB 來啟用。任何提到利用 DB2_LGPAGE_BP 登錄變數來啟用大型頁面的文件,都可以視為與設定 DB2_LARGE_PAGE_MEM=DB 同義。

使用大型頁面的主要意圖在於增進高效能運算應用程式的效能。 密集存取記憶體並使用大量虛擬記憶體的應用程式可以藉由使用大型頁面來增進效能。 若要讓 DB2 UDB 能夠使用大型頁面,首先您必須配置作業系統以使用大型頁面。

啟用大型專用頁面將顯著地增加 DB2 UDB 記憶體使用量, 因為每一個 DB2 UDB 代理站將耗用至少 1 大型頁面 (16MB) 的實體記憶體。 若要啟用 64 位元 DB2 for AIX 上之代理站專用記憶體的大型頁面 (DB2_LARGE_PAGE_MEM=PRIVATE 設定), 除了在作業系統上配置大型頁面外,必須符合下列條件:

  • 實例擁有者必須擁有 CAP_BYPASS_RAC_VMM 及 CAP_PROPOGATE 功能。
  • 核心程式必須支援容許程序在執行時期修改其頁面大小的介面。 .

在 64 位元 DB2 for AIX 上, 啟用這個變數會將支持資料庫記憶體的共用記憶體區段大小減少至最小需求量。預設值是建立 64 GB 區段:請參閱資料庫共用記憶體大小 (database_memory) 資料庫配置參數, 以取得更多的詳細資訊。這可避免固定放在 RAM 的共用記憶體超過可能使用的共用記憶體。

藉由設定這個變數,將限制動態增加整體資料庫共用記憶體配置的能力 (例如, 增加緩衝池的大小)。

在 Linux 上,還需要能夠使用 libcap.so 檔案庫。 若要讓這個選項能夠運作,必須安裝這個檔案庫。如果開啟了這個選項, 但檔案庫不在系統上,DB2 UDB 將停用大型核心程式頁面,並繼續以先前方式運作。

在 Linux 上,若要驗證大型核心程式頁面是否可用,請發出下列命令:

      cat /proc/meminfo

如果可用,應該出現下列三行 (數目會有所不同,取決您機器上所配置的記憶體數量而定):

      HugePages_Total:   200
      HugePages_Free:    200
      Hugepagesize:    16384 KB

如果沒有看到這些行, 或如果 HugePages_Total 為 0,則需要作業系統或核心程式的配置。

SQL 編譯器變數

下列更新適用於管理手冊:效能附錄 A「DB2 登錄及環境變數」中的「SQL 編譯器變數」此主題:

當 DB2 編譯器變數 DB2_MINIMIZE_LISTPREFETCH 及 DB2_INLIST_TO_NLJN 任一個或兩者設為 ON 時,即使指定了 REOPT(ONCE),它們仍然保持作用中。

配置參數更新

下列是配置參數文件的更新:

鑑別 - 鑑別類型

「鑑別」類型 (鑑別) 資料庫管理程式配置參數也接受下列值:

util_impact_lim - 實例影響原則

從 DB2 Universal Database 8.2 版開始,實例影響原則 (util_impact_lim) 資料庫管理程式配置參數的預設值從 100 變更為 10。

sysadm_group、sysmaint_group、sysctrl_group、 sysmon_group

在所有平台上,下列資料庫管理程式配置參數全都可以接受 30 個 (或更少) 位元組的群組名稱:

主題「資料庫管理程式配置參數摘要」中的表格,包含這些資料庫管理程式配置參數的不正確資料類型。 所有情況中的正確值是 char(30)。

estore_seg_sz - 擴展儲存體記憶體區段大小

在 Windows(R) 型平台上,擴展儲存體記憶體區段大小資料庫 (estore_seg_size) 配置參數的大小上限為 16 777 216。

hadr_timeout - HADR 逾時值

HADR 逾時值 (hadr_timeout) 資料庫配置參數的正確上限為 4 294 967 295。

locklist - 鎖定清單的最大儲存體

鎖定清單的最大儲存體 (locklist) 資料庫配置參數的文件,陳述只為本端用戶端服務的 Windows 64 位元及 32 位元伺服器,其上限值為 60 000。此值不正確,應為 524 288。

num_db_backups - 資料庫備份數目

資料庫備份數目 (num_db_backups) 資料庫配置參數的值範圍不正確。 正確範圍是 0 - 32 767。

SQLDBCONF 資料庫配置參數檔案

從 DB2 Universal Database (UDB) 8.1 版移轉至 8.2 版後,DB2 UDB 會使用新的 16 KB 資料庫配置參數檔案,名為 SQLDBCONF。(在 8.1 版中,資料庫配置參數檔案只是 4 KB 且名為 SQLDBCON)。

變更為 DB2_HASH_JOIN 預設值

從 8.1 版開始,登錄變數 DB2_HASH_JOIN 將預設為 ON。

應該使用「雜湊-結合」變數,但需要調整它才能得到最佳效能。

如果您可以避免雜湊迴圈及磁碟溢位,「雜湊-結合」效能即是最好的。 若要調整「雜湊-結合」效能,請估計 sheapthres 參數可用的記憶體數量上限, 然後調整 sortheap 參數。請增加此值,直到儘可能避開許多雜湊迴圈及磁碟溢位, 但請不要達到 sheapthres 參數指定的限制。

如需詳細資訊,請參閱管理手冊:效能手冊中的「結合方法」主題。

DB2NTNOCACHE 登錄變數即將棄用

先前透過 DB2NTNOCACHE 達成的功能也可以在表格空間層次達成, 方法為在 CREATE TABLESPACE 或 ALTER TABLESPACE 陳述式上, 指定 NO FILE SYSTEM CACHING 子句。請參閱 SQL Reference,以取得用法的詳細資訊。未來版次將除去 DB2NTNOCACHE 登錄變數。

解譯資訊的解譯表格及組織

解譯表格可能為多個使用者所共用。但是,解譯表格可定義給一個使用者, 而別名可定義給每一個使用相同名稱以指向已定義表格的其他使用者。另外,解譯表格可以定義在 SYSTOOLS 綱目下面。如果在動態 SQL 的使用者階段作業 ID 下, 或在靜態 SQL 的陳述式授權 ID 下,找不到任何其他解譯表格或別名, 「解譯」機能將預設為 SYSTOOLS 綱目。每一個共用相同解譯表格的使用者都必須對那些表格具有插入權。共用解譯表格的讀取權也應該予以限制,尤其是分析解譯資訊的使用者。

擷取解譯資訊的指引

當編譯 SQL 陳述式時,如果您要要求解譯資料,即會擷取它。 請考慮當您要求解譯資料時預期如何使用所擷取的資訊。

擷取解譯表格中的資訊

來自 db2CfgGet API (collate_info 參數) 的其他回覆碼

僅能使用 db2CfgGet API 來顯示對照資訊參數。 無法透過命令行處理器或控制中心來顯示它。

配置類型
資料庫
參數類型
資訊

這個參數提供 260 個位元組的資料庫對照資訊。 前面 256 個位元組指定資料庫對照順序,其中位元組 『n』 包含字碼點的排序權重, 這個字碼點的基礎小數表示法是資料庫字碼頁中的 『n』。

最後 4 個位元組包含關於對照順序類型的內部資訊。 collate_info 的最後 4 個位元組是整數。整數會區分平台的 Endian 次序。 可能值如下:

如果使用這個內部類型資訊,則在不同平台上擷取資料庫的資訊時, 您需要考慮位元組反轉技術。

您可以在建立資料庫時指定對照順序。

自動設定預設的預先提取大小及更新預設值

從 DB2 Universal Database (UDB) 8.2 版開始,您可以對表格空間使用 AUTOMATIC 預先提取大小。當表格空間的儲存區數目變更時, DB2 UDB 會自動更新預先提取大小。

為了辨識具有不同 I/O 平行性質的儲存區,已擴充 DB2_PARALLEL_IO 登錄變數的語法。 透過擴充的語法,不同表格空間的儲存區可以具有不同的 I/O 平行性質。 當指定 AUTOMATIC 預先提取大小給表格空間時,就會使用每一個表格空間的 I/O 平行性質。 如果啟用了 DB2_PARALLEL_IO 登錄變數,但未使用針對表格空間識別特定 I/O 平行性質的擴充語法, 將採用預設並行化層次。預設層次是 RAID 5 (6+1)。

只在發出變更表格空間的預先提取大小, 或變更儲存區數目 (使用 ADD/DROP/BEGIN NEW STRIPE SET/ADD TO NEW STRIPE SET) 的 ALTER TABLESPACE 陳述式時,才會重新整理最佳化工具所使用的預先提取大小資訊。 如果每一個儲存區登錄設定的實體磁碟數目有所變更, 則應該發出 ALTER TABLESPACE <table space name> PREFETCHSIZE AUTOMATIC 陳述式,重新整理最佳化工具資訊 (除非已發出重新整理最佳化工具資訊的 ALTER TABLESPACE 陳述式)。

如果表格空間重新導向為或還原為使用不同的儲存區數目, 請發出 ALTER TABLESPACE <table space name> PREFETCHSIZE AUTOMATIC 陳述式, 來重新整理最佳化工具資訊。 如果表格空間內有多個等量集,將使用等量集之間的儲存區數目上限,來計算預先提取大小。 如果算出的預先提取大小超出大小上限 (32 767 頁),將使用小於上限的最大儲存區數的倍數來作為預先提取大小。

在 DB2 UDB Enterprise Server Edition 環境中,如果表格空間使用 AUTOMATIC 預先提取大小, 則在不同資料庫分割區上可能有不同的預先提取大小。這種狀況可能存在, 因為不同的資料庫分割區可以具有不同的儲存區數目,用於計算預先提取大小。 若要產生查詢存取計劃,最佳化工具會從資料庫分割區群組中的第一個分割區使用預先提取大小。

[ 頁面頂端 |前一頁 | 下一頁 | 目錄 ]