亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

使用DB2look 重新創(chuàng)建優(yōu)化器訪問計(jì)劃(2)

瀏覽:4日期:2023-11-11 12:42:48

提示:正如將在下面的 “排序堆 一節(jié)中所看到的,它的工作方式與排序堆的相同。 假如您是一名 DBA,就可能會(huì)使用 DB2 SQL Explain&正如將在下面的 “排序堆 一節(jié)中所看到的,它的工作方式與排序堆的相同。

假如您是一名 DBA,就可能會(huì)使用 DB2 SQL Explain Tool(db2exfmt)來獲得對(duì)于 SQL 訪問計(jì)劃的理解。db2exfmt 工具用于格式化解釋表的內(nèi)容。假如您在生產(chǎn)中使用 db2exfmt 查看一個(gè)訪問計(jì)劃的輸出,就會(huì)注重到計(jì)劃頂部的下列內(nèi)容。(注重:這些參數(shù)通常是由 db2look 輸出中的 -f 和 -fd 選項(xiàng)所選擇的,除了 dbheap 設(shè)置之外)。清單 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 ---------------- QUERYNO:1 QUERYTAG:  CLP Statement Type: Select Updatable: No Deletable: No Query Degree: 

假如您稍稍深入查看 db2exfmt 的輸出,就在訪問計(jì)劃之后,您將看到是否具有影響優(yōu)化器計(jì)劃的注冊(cè)表設(shè)置。

注重:另外,遺憾的是,db2look -f 并非列出了所有相關(guān)的注冊(cè)表變量。您將需要添加那些遺漏的。一般來說,您測(cè)試系統(tǒng)上的注冊(cè)表變量設(shè)置應(yīng)與生產(chǎn)系統(tǒng)上的相同,或者盡可能接近。

清單 4. 影響訪問計(jì)劃的注冊(cè)表設(shè)置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

創(chuàng)建數(shù)據(jù)定義語言(DDL)

下列 "db2look" 命令創(chuàng)建了 DDL 以復(fù)制所有數(shù)據(jù)庫對(duì)象,以及配置和統(tǒng)計(jì)信息。db2look -d <dbname> -e -a -m -o db2look.out核心提示:這里,我們使用了下列參數(shù): -a:為所有的創(chuàng)建器(creator)生成統(tǒng)計(jì)數(shù)據(jù)。假如指定了該選項(xiàng),那么將忽略 -u 選項(xiàng)。 -e:提取復(fù)制數(shù)據(jù)庫所需的&n。

這里,我們使用了下列參數(shù):

-a:為所有的創(chuàng)建器(creator)生成統(tǒng)計(jì)數(shù)據(jù)。假如指定了該選項(xiàng),那么將忽略 -u 選項(xiàng)。

-e:提取復(fù)制數(shù)據(jù)庫所需的 DDL 文件。該選項(xiàng)生成包含了 DDL 語句的腳本。該腳本可以在另一數(shù)據(jù)庫上運(yùn)行以重新創(chuàng)建數(shù)據(jù)庫對(duì)象。

-m:以模擬模式運(yùn)行 db2look 實(shí)用程序。該選項(xiàng)生成包含了 SQL UPDATE 語句的腳本。這些 SQL UPDATE 語句捕捉所有的統(tǒng)計(jì)數(shù)據(jù)。該腳本可以在另一數(shù)據(jù)庫上運(yùn)行以復(fù)制原來的那一個(gè)數(shù)據(jù)庫。當(dāng)指定 -m 選項(xiàng)時(shí),將忽略 -p、-g 和 -s 選項(xiàng)。

收集數(shù)據(jù)庫子集的統(tǒng)計(jì)數(shù)據(jù)和 DDL

為了僅僅收集某些表和相關(guān)對(duì)象的統(tǒng)計(jì)數(shù)據(jù)和 ddl,可使用下列命令:db2look -d <dbname> -e -a -m -t <table1> <table2>.. <tableX> -o table.ddl

這里,我使用了下列附加參數(shù):

-t:為特定的表生成統(tǒng)計(jì)數(shù)據(jù)。可以將表的最大數(shù)目指定為 30。

此外,假如您不使用 -a 選項(xiàng),就可以使用 -z 選項(xiàng):

-z:模式名。假如同時(shí)指定了 -z 和 -a,那么將忽略 -z。聯(lián)邦區(qū)域?qū)⒑雎阅J矫?/p>

注重:-m 選項(xiàng)極其重要。該選項(xiàng)將從系統(tǒng)表收集所有統(tǒng)計(jì)數(shù)據(jù)。測(cè)試中的統(tǒng)計(jì)數(shù)據(jù)必須與生產(chǎn)中的相同,這些統(tǒng)計(jì)數(shù)據(jù)是可以在測(cè)試環(huán)境中模擬生產(chǎn)環(huán)境的要害。

db2exfmt 輸出的更多細(xì)節(jié)

數(shù)據(jù)庫治理器級(jí)的配置參數(shù)

注重:使用命令 db2 "get dbm cfg" 查看這些參數(shù),并使用并行性(Parallelism):db2 "update dbm cfg using <parameter> <value>"

更新數(shù)據(jù)庫治理器的配置參數(shù)。

該參數(shù)表明是啟用分區(qū)間并行性(inter-partition parallelism),還是啟用內(nèi)部分區(qū)并行性(intra-partition parallelism)。假如這是具有多個(gè)分區(qū)的 DPF,那么您將看到 Inter Partition Parallelism。假如這只是 SMP(啟用 intra_parallel)單個(gè)節(jié)點(diǎn)環(huán)境,那么您將看到 Intra Partition Parallelism。假如啟用了 intra_parallel,并且是多個(gè)分區(qū)的環(huán)境,您將看到該參數(shù)為 Inter and Intra partitions parallelism。最后,假如沒有分區(qū)間或分區(qū)內(nèi)并行性,該參數(shù)將顯示 NONE。

CPU 速度(cpuspeed):

SQL 優(yōu)化器使用 CPU 速度(每條指令幾微秒)來評(píng)估某些操作的執(zhí)行成本。

通信速度(comm_bandwidth):

SQL 優(yōu)化器使用為通信帶寬所指定的值(每秒幾兆字節(jié))來評(píng)估在分區(qū)數(shù)據(jù)庫系統(tǒng)中的分區(qū)服務(wù)器之間執(zhí)行某些操作的成本。

數(shù)據(jù)庫級(jí)的配置參數(shù)

注重:使用命令 db2 "get db cfg for " 來查看這些參數(shù),以及使用 db2 "update db cfg for using ") 來更新數(shù)據(jù)庫配置參數(shù)。

緩沖池大小(buffer pool size):

假如使用 buffpage 作為一個(gè)緩沖池的默認(rèn)值,那么 db2exfmt 輸出中顯示的緩沖池大小就是由 buffpage 參數(shù)決定的,或者基于 syscat.bufferpools 的內(nèi)容進(jìn)行計(jì)算。所顯示的數(shù)目就是分配給數(shù)據(jù)庫的緩沖池頁面的總數(shù)目。例如,假設(shè)我們具有下列緩沖池:

表 1. 緩沖池設(shè)置

緩沖池名稱大小IBMDEFAULTBP1000 BP11000 BP24000 BPIND11000 BPIND21000 BPLONG1000 BPTEMP1000 總數(shù):10,000

db2exfmt 輸出將顯示所有緩沖池中的頁面總數(shù)為總的大小。在上面的例子中,就是 10,000。 注重:頁面大小(Pagesize)無關(guān)緊要,僅僅是頁面的數(shù)目。

假如您無法在測(cè)試中分配到與生產(chǎn)中相同數(shù)量的緩沖池,那么可以在 db2look 中使用 -fd 選項(xiàng)來使用 db2fopt 備選命令。

在 MPP 中,優(yōu)化器為運(yùn)行查詢的節(jié)點(diǎn)使用總的緩沖池信息時(shí),要按每個(gè)節(jié)點(diǎn)來計(jì)算 opt_buffpage。因此,該修改將僅僅應(yīng)用到運(yùn)行該工具的那個(gè)節(jié)點(diǎn)上。

排序堆大小(SORTHEAP)

該參數(shù)定義用于私有排序的私有內(nèi)存頁面的最大數(shù)目,或用于共享排序的共享內(nèi)存頁面的最大數(shù)目。

您應(yīng)將之設(shè)置為與生產(chǎn)中相同的值。同樣,通過在 db2look 中使用 -fd 選項(xiàng),您將注重到:!db2fopt SAMPLE update opt_sortheap 256;

這將重寫 sortheap 配置參數(shù),優(yōu)化器也將之用作 sortheap 值。同樣,在運(yùn)行時(shí)真正分配的排序堆(sortheap)實(shí)際上將由數(shù)據(jù)庫配置中的 sortheap 設(shè)置來決定。與 opt_buffpage 相同,假如您無法在測(cè)試系統(tǒng)上分配與生產(chǎn)系統(tǒng)上相同大小的排序堆(sortheap),那么可以使用 opt_sortheap。

數(shù)據(jù)庫堆大小(DBHEAP):

每個(gè)數(shù)據(jù)庫都有一個(gè)數(shù)據(jù)庫堆,數(shù)據(jù)庫治理器使用它來代表連接到數(shù)據(jù)庫上的所有應(yīng)用程序。 它包含表、索引、表空間和緩沖池的控制塊信息。

鎖列表大小(LOCKLIST):

該參數(shù)表示分配給鎖列表的存儲(chǔ)器大小。

最大鎖列表(MAXLOCKS):

該參數(shù)定義數(shù)據(jù)庫治理器執(zhí)行升級(jí)之前必須填入的應(yīng)用程序所占有鎖列表的百分比。

locklist 和 maxlocks 將幫助確定某掃描(索引掃描或表掃描)期間將持有的鎖類型,以及隔離級(jí)別。例如,您將在計(jì)劃中注重到(比如說)索引掃描操作:IXSCAN: (Index Scan) TABLOCK : (Table Lock intent) INTENT SHARE

注重:假如測(cè)試系統(tǒng)的 db2exfmt 輸出中的可用鎖(Locks Available)與生產(chǎn)系統(tǒng)不同,就不要進(jìn)行連接 —— 該差異不影響查詢計(jì)劃。

平均應(yīng)用程序(AVG_APPLS):

SQL 優(yōu)化器使用該參數(shù)來幫助評(píng)估在運(yùn)行時(shí)有多少緩沖池可用于所選擇的訪問計(jì)劃中(因?yàn)檫B接到數(shù)據(jù)庫的所有活動(dòng)應(yīng)用程序共享緩沖池)。

優(yōu)化級(jí)別(DFT_QUERYOPT):

查詢優(yōu)化類用于在編譯 SQL 查詢時(shí)指導(dǎo)優(yōu)化器使用不同的優(yōu)化級(jí)別。

查詢深度(DFT_DEGREE):

用于 SQL 語句的分區(qū)內(nèi)部并行程度。假如設(shè)置為 ANY,優(yōu)化器就對(duì)聯(lián)機(jī)的實(shí)際 CPU 數(shù)目敏感。假如您使用 ANY,那么就應(yīng)該將測(cè)試和生產(chǎn)系統(tǒng)上的 CPU 數(shù)目配置得相同,除非禁用分區(qū)內(nèi)并行(intra_parallel)。

除了以上修改之外,還必須確保其他一些參數(shù)都相同。

保留的高頻值數(shù)目(NUM_FREQVALUES):

該參數(shù)答應(yīng)您指定“高頻值(most frequent values)的數(shù)目,當(dāng)在 RUNSTATS 命令上指定 WITH DISTRIBUTION 選項(xiàng)時(shí),將收集該值。

保留的分位數(shù)數(shù)目(NUM_QUANTILES):

該參數(shù)控制在 RUNSTATS 命令上指定 WITH DISTRIBUTION 選項(xiàng)時(shí)將收集的分位數(shù)(quantile)數(shù)目。

測(cè)試系統(tǒng)上的上述兩個(gè)參數(shù) NUM_FREQVALUES 和 NUM_QUANTILES 必須與生產(chǎn)系統(tǒng)中的相同,以便確保在測(cè)試系統(tǒng)上收集與生產(chǎn)中相同數(shù)目的頻值數(shù)目和分位數(shù)值。SQL 語句堆(4KB)(STMTHEAP):

在 SQL 語句的編譯期間,語句堆(statement heap)用作 SQL 編譯器的工作空間。該參數(shù)指定該工作空間的大小。假如測(cè)試中的該參數(shù)小于生產(chǎn)中的,您就可能會(huì)開始看到 SQL0101N 消息,因?yàn)槿狈幾g查詢所需要的語句堆空間。假如沒有足夠的語句堆用于動(dòng)態(tài)連接枚舉,您也可能看到 SQL0437W RC=1,下降為貪婪連接枚舉。

標(biāo)簽: DB2 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 免费看的黄色录像 | 亚洲一区色 | 国产在线麻豆精品观看 | 亚洲欧美日韩精品久久亚洲区 | 一级性黄色片 | 亚洲精品久久玖玖玖玖 | 精品一区二区三区四区乱码90 | 高清毛片一区二区三区 | 精品乱码 | 精品a视频 | 亚洲 欧美 自拍 卡通 综合 | 91短视频黄 | 国产免费高清无需播放器 | 5月婷婷6月丁香 | 女人十八毛片免费特黄 | 亚洲欧美色欧另类欧 | 特级淫片国产免费高清视频 | 亚洲高清视频在线 | 欧美人在线一区二区三区 | 国产精品99久久免费黑人 | 91短视频社区在线观看 | 日韩色视频一区二区三区亚洲 | 中文字幕日本亚洲欧美不卡 | 伊人激情| 成人黄色免费在线观看 | 日韩孕交japanese孕交 | 亚洲精品免费在线观看 | 黄色片一 | 日韩欧美久久一区二区 | 99九九国产精品免费视频 | 日本免费一区二区三区a区 日本内谢69xxxx免费播放 | 一本黄色片| 国产123区在线视频观看 | 国产最新进精品视频 | 国产成人久久久精品一区二区三区 | 日韩欧美中文字幕在线播放 | 国产一卡 | 99久热在线精品视频播 | 精品三区 | 国产精品宾馆在线精品酒店 | 18日本xxxxxxⅹxx96 |