久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

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

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

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

假如您是一名 DBA,就可能會(huì)使用 DB2 SQL Explain Tool(db2exfmt)來(lái)獲得對(duì)于 SQL 訪問(wèn)計(jì)劃的理解。db2exfmt 工具用于格式化解釋表的內(nèi)容。假如您在生產(chǎn)中使用 db2exfmt 查看一個(gè)訪問(wèn)計(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 的輸出,就在訪問(wèn)計(jì)劃之后,您將看到是否具有影響優(yōu)化器計(jì)劃的注冊(cè)表設(shè)置。

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

清單 4. 影響訪問(wèn)計(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ù)定義語(yǔ)言(DDL)

下列 "db2look" 命令創(chuàng)建了 DDL 以復(fù)制所有數(shù)據(jù)庫(kù)對(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ù)庫(kù)所需的&n。

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

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

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

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

收集數(shù)據(jù)庫(kù)子集的統(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ù)庫(kù)治理器級(jí)的配置參數(shù)

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

更新數(shù)據(jù)庫(kù)治理器的配置參數(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。最后,假如沒(méi)有分區(qū)間或分區(qū)內(nèi)并行性,該參數(shù)將顯示 NONE。

CPU 速度(cpuspeed):

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

通信速度(comm_bandwidth):

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

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

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

緩沖池大小(buffer pool size):

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

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

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

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

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

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

排序堆大小(SORTHEAP)

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

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

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

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

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

鎖列表大小(LOCKLIST):

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

最大鎖列表(MAXLOCKS):

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

locklist 和 maxlocks 將幫助確定某掃描(索引掃描或表掃描)期間將持有的鎖類(lèi)型,以及隔離級(jí)別。例如,您將在計(jì)劃中注重到(比如說(shuō))索引掃描操作: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ù)來(lái)幫助評(píng)估在運(yùn)行時(shí)有多少緩沖池可用于所選擇的訪問(wèn)計(jì)劃中(因?yàn)檫B接到數(shù)據(jù)庫(kù)的所有活動(dòng)應(yīng)用程序共享緩沖池)。

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

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

查詢深度(DFT_DEGREE):

用于 SQL 語(yǔ)句的分區(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 語(yǔ)句堆(4KB)(STMTHEAP):

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

標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 九寨沟县| 绥宁县| 五台县| 双城市| 八宿县| 长泰县| 凯里市| 亚东县| 松滋市| 宣城市| 秦安县| 花垣县| 万年县| 庄浪县| 德格县| 重庆市| 玛多县| 枣庄市| 图木舒克市| 五指山市| 西藏| 华亭县| 伊宁市| 乌恰县| 宣化县| 平阴县| 社会| 措勤县| 定西市| 广平县| 庆阳市| 宝坻区| 惠安县| 渑池县| 彭阳县| 安化县| 宝鸡市| 库伦旗| 河曲县| 凌源市| 郓城县|