国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
使用DB2look 重新創(chuàng)建優(yōu)化器訪問計劃(2)
正如將在下面的 排序堆 一節(jié)中所看到的,它的工作方式與排序堆的相同。 
如果您是一名 DBA,就可能會使用 DB2 SQL Explain Tool(db2exfmt)來獲得對于 SQL 訪問計劃的理解。db2exfmt 工具用于格式化解釋表的內(nèi)容。如果您在生產(chǎn)中使用 db2exfmt 查看一個訪問計劃的輸出,就會注意到計劃頂部的下列內(nèi)容。(注意:這些參數(shù)通常是由 db2look 輸出中的 -f 和 -fd 選項所選擇的,除了 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:           1  

如果您稍稍深入查看 db2exfmt 的輸出,就在訪問計劃之后,您將看到是否具有影響優(yōu)化器計劃的注冊表設(shè)置。 
注意:另外,遺憾的是,db2look -f 并非列出了所有相關(guān)的注冊表變量。您將需要添加那些遺漏的。一般來說,您測試系統(tǒng)上的注冊表變量設(shè)置應(yīng)與生產(chǎn)系統(tǒng)上的相同,或者盡可能接近。 

清單 4. 影響訪問計劃的注冊表設(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ù)庫對象,以及配置和統(tǒng)計信息。 

db2look -d <dbname> -e -a -m -o db2look.out 

這里,我們使用了下列參數(shù): 
-a:為所有的創(chuàng)建器(creator)生成統(tǒng)計數(shù)據(jù)。如果指定了該選項,那么將忽略 -u 選項。  
-e:提取復(fù)制數(shù)據(jù)庫所需的 DDL 文件。該選項生成包含了 DDL 語句的腳本。該腳本可以在另一數(shù)據(jù)庫上運(yùn)行以重新創(chuàng)建數(shù)據(jù)庫對象。  
-m:以模擬模式運(yùn)行 db2look 實用程序。該選項生成包含了 SQL UPDATE 語句的腳本。這些 SQL UPDATE 語句捕獲所有的統(tǒng)計數(shù)據(jù)。該腳本可以在另一數(shù)據(jù)庫上運(yùn)行以復(fù)制原來的那一個數(shù)據(jù)庫。當(dāng)指定 -m 選項時,將忽略 -p、-g 和 -s 選項。 
收集數(shù)據(jù)庫子集的統(tǒng)計數(shù)據(jù)和 DDL 
為了僅僅收集某些表和相關(guān)對象的統(tǒng)計數(shù)據(jù)和 ddl,可使用下列命令: 

db2look -d <dbname> -e -a -m -t <table1> <table2> .. <tableX> -o table.ddl  

這里,我使用了下列附加參數(shù): 
-t:為特定的表生成統(tǒng)計數(shù)據(jù)??梢詫⒈淼淖畲髷?shù)目指定為 30。 
此外,如果您不使用 -a 選項,就可以使用 -z 選項: 
-z:模式名。如果同時指定了 -z 和 -a,那么將忽略 -z。聯(lián)邦區(qū)域?qū)⒑雎阅J矫?nbsp;

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

db2exfmt 輸出的更多細(xì)節(jié) 
數(shù)據(jù)庫管理器級的配置參數(shù) 
注意:使用命令 db2 "get dbm cfg" 查看這些參數(shù),并使用 db2 "update dbm cfg using <parameter> <value>" 更新數(shù)據(jù)庫管理器的配置參數(shù)。 
并行性(Parallelism): 
該參數(shù)表明是啟用分區(qū)間并行性(inter-partition parallelism),還是啟用內(nèi)部分區(qū)并行性(intra-partition parallelism)。如果這是具有多個分區(qū)的 DPF,那么您將看到 Inter Partition Parallelism。如果這只是 SMP(啟用 intra_parallel)單個節(jié)點環(huán)境,那么您將看到 Intra Partition Parallelism。如果啟用了 intra_parallel,并且是多個分區(qū)的環(huán)境,您將看到該參數(shù)為 Inter and Intra partitions parallelism。最后,如果沒有分區(qū)間或分區(qū)內(nèi)并行性,該參數(shù)將顯示 NONE。 
CPU 速度(cpuspeed): 
SQL 優(yōu)化器使用 CPU 速度(每條指令幾微秒)來評估某些操作的執(zhí)行成本。 
通信速度(comm_bandwidth): 
SQL 優(yōu)化器使用為通信帶寬所指定的值(每秒幾兆字節(jié))來評估在分區(qū)數(shù)據(jù)庫系統(tǒng)中的分區(qū)服務(wù)器之間執(zhí)行某些操作的成本。 
數(shù)據(jù)庫級的配置參數(shù) 
注意:使用命令 db2 "get db cfg for <dbname>" 來查看這些參數(shù),以及使用 db2 "update db cfg for <dbname> using <parameter> <value>") 來更新數(shù)據(jù)庫配置參數(shù)。 
緩沖池大?。╞uffer pool size): 
如果使用 buffpage 作為一個緩沖池的默認(rèn)值,那么 db2exfmt 輸出中顯示的緩沖池大小就是由 buffpage 參數(shù)決定的,或者基于 syscat.bufferpools 的內(nèi)容進(jìn)行計算。所顯示的數(shù)目就是分配給數(shù)據(jù)庫的緩沖池頁面的總數(shù)目。例如,假設(shè)我們具有下列緩沖池: 

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

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

db2exfmt 輸出將顯示所有緩沖池中的頁面總數(shù)為總的大小。在上面的例子中,就是 10,000。 注意:頁面大?。≒agesize)無關(guān)緊要,僅僅是頁面的數(shù)目。 
如果您無法在測試中分配到與生產(chǎn)中相同數(shù)量的緩沖池,那么可以在 db2look 中使用 -fd 選項來使用 db2fopt 備選命令。 
在 MPP 中,優(yōu)化器為運(yùn)行查詢的節(jié)點使用總的緩沖池信息時,要按每個節(jié)點來計算 opt_buffpage。因此,該修改將僅僅應(yīng)用到運(yùn)行該工具的那個節(jié)點上。 
排序堆大?。⊿ORTHEAP) 
該參數(shù)定義用于私有排序的私有內(nèi)存頁面的最大數(shù)目,或用于共享排序的共享內(nèi)存頁面的最大數(shù)目。 
您應(yīng)將之設(shè)置為與生產(chǎn)中相同的值。同樣,通過在 db2look 中使用 -fd 選項,您將注意到: 

!db2fopt SAMPLE update opt_sortheap 256; 

這將重寫 sortheap 配置參數(shù),優(yōu)化器也將之用作 sortheap 值。同樣,在運(yùn)行時真正分配的排序堆(sortheap)實際上將由數(shù)據(jù)庫配置中的 sortheap 設(shè)置來決定。與 opt_buffpage 相同,如果您無法在測試系統(tǒng)上分配與生產(chǎn)系統(tǒng)上相同大小的排序堆(sortheap),那么可以使用 opt_sortheap。 
數(shù)據(jù)庫堆大?。―BHEAP): 
每個數(shù)據(jù)庫都有一個數(shù)據(jù)庫堆,數(shù)據(jù)庫管理器使用它來代表連接到數(shù)據(jù)庫上的所有應(yīng)用程序。 它包含表、索引、表空間和緩沖池的控制塊信息。 
鎖列表大?。↙OCKLIST): 
該參數(shù)表示分配給鎖列表的存儲器大小。 
最大鎖列表(MAXLOCKS): 
該參數(shù)定義數(shù)據(jù)庫管理器執(zhí)行升級之前必須填入的應(yīng)用程序所占有鎖列表的百分比。 
locklist 和 maxlocks 將幫助確定某掃描(索引掃描或表掃描)期間將持有的鎖類型,以及隔離級別。例如,您將在計劃中注意到(比如說)索引掃描操作: 

  IXSCAN: (Index Scan) 

          TABLOCK : (Table Lock intent) 
                 INTENT SHARE 

注意:如果測試系統(tǒng)的 db2exfmt 輸出中的可用鎖(Locks Available)與生產(chǎn)系統(tǒng)不同,就不要進(jìn)行連接 —— 該差異不影響查詢計劃。 
平均應(yīng)用程序(AVG_APPLS): 
SQL 優(yōu)化器使用該參數(shù)來幫助評估在運(yùn)行時有多少緩沖池可用于所選擇的訪問計劃中(因為連接到數(shù)據(jù)庫的所有活動應(yīng)用程序共享緩沖池)。 
優(yōu)化級別(DFT_QUERYOPT): 
查詢優(yōu)化類用于在編譯 SQL 查詢時指導(dǎo)優(yōu)化器使用不同的優(yōu)化級別。 
查詢深度(DFT_DEGREE): 
用于 SQL 語句的分區(qū)內(nèi)部并行程度。如果設(shè)置為 ANY,優(yōu)化器就對聯(lián)機(jī)的實際 CPU 數(shù)目敏感。如果您使用 ANY,那么就應(yīng)該將測試和生產(chǎn)系統(tǒng)上的 CPU 數(shù)目配置得相同,除非禁用分區(qū)內(nèi)并行(intra_parallel)。 
除了以上修改之外,還必須確保其他一些參數(shù)都相同。 
保留的高頻值數(shù)目(NUM_FREQVALUES): 
該參數(shù)允許您指定“高頻值(most frequent values)”的數(shù)目,當(dāng)在 RUNSTATS 命令上指定 WITH DISTRIBUTION 選項時,將收集該值。 
保留的分位數(shù)數(shù)目(NUM_QUANTILES): 
該參數(shù)控制在 RUNSTATS 命令上指定 WITH DISTRIBUTION 選項時將收集的分位數(shù)(quantile)數(shù)目。 
測試系統(tǒng)上的上述兩個參數(shù) NUM_FREQVALUES 和 NUM_QUANTILES 必須與生產(chǎn)系統(tǒng)中的相同,以便確保在測試系統(tǒng)上收集與生產(chǎn)中相同數(shù)目的頻值數(shù)目和分位數(shù)值。 
SQL 語句堆(4KB)(STMTHEAP): 
在 SQL 語句的編譯期間,語句堆(statement heap)用作 SQL 編譯器的工作空間。該參數(shù)指定該工作空間的大小。如果測試中的該參數(shù)小于生產(chǎn)中的,您就可能會開始看到 SQL0101N 消息,因為缺乏編譯查詢所需要的語句堆空間。如果沒有足夠的語句堆用于動態(tài)連接枚舉,您也可能看到 SQL0437W RC=1,下降為貪婪連接枚舉。

  
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
那些年,我們處理過的SQL問題
監(jiān)控 DB2 活動之使用解釋工具分析SQL
DB Lens
數(shù)據(jù)庫相關(guān)知識
db2look命令得到數(shù)據(jù)庫對象的DDL 腳本
Oracle dblink詳解(轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服