久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

提高商業智能環境中DB2查詢的性能(1)

瀏覽:205日期:2023-11-08 10:19:40
高效地運行大型查詢,是商業智能環境中的頂級性能挑戰。學習在這種環境中提高 IBM® DB2® 數據服務器查詢性能的技巧。逐步了解各種不同的方法,然后在自己的系統上進行試驗。將每種方法應用于一條 SQL 語句,并使用 db2batch 工具評測性能。簡介本文主要討論可以使決策支持系統(DSS)中的大型查詢高效地執行的一些方法。這些查詢通常都是訪問較多數據的單純 select 查詢。下面是我們要討論的一些方法:1、建立適當的參照完整性約束2、使用物化查詢表(MQT)將表復制到其它數據庫分區,以答應非分區鍵列上的合并連接3、使用多維集群(MDC)4、使用表分區(DB2® 9 的新功能)5、結合使用表分區和多維集群6、使用 MQT 預先計算聚合結果本文中的例子針對 Windows 平臺上運行的 DB2 9。但是,其中的概念和信息對于任何平臺都是有用的。由于大多數商業智能(BI)環境都使用 DB2 Database Partitioning Feature(DPF,DB2 數據庫分區特性),我們的例子也使用 DPF 將數據劃分到多個物理和邏輯分區之中。數據庫布局和設置本節描述用于在我們的系統上執行測試的數據庫的物理和邏輯布局。星型模式布局本文使用如下所示的星型模式:清單 1. 星型模式 PRODUCT_DIM DATE_DIM/  / SALES_FACT | | STORE_DIM其中的表的定義如下:表名 類型 列名 數據類型 列描述 SALES_FACTFACT TABLEDATE_IDDATE產品售出日期PRODUCT_IDINT所購買產品的標識符STORE_IDINT出售產品的商店的標識符QUANTITYINT這次交易中售出產品的數量PRICEINT產品購買價格。[為了簡單起見,該字段為整型,但是使用小數型更符合實際]TRANSACTION_DETAILSCHAR(100)關于此次交易的描述/具體信息DATE_DIMDIMENSION TABLEDATE_ID NOT NULLDATE惟一標識符MONTHINT日期記錄所屬的月份QUARTERINT日期記錄所屬的季度(第 1、第 2、第 3 或第 4 季度)YEARINT日期記錄所屬的年份PRODUCT_DIMDIMENSION TABLEPRODUCT_ID NOT NULLINT產品惟一標識符PRODUCT_DESCCHAR(20)對產品的描述MODELCHAR(200)產品型號MAKECHAR(50)產品的質地STORE_DIMDIMENSION TABLESTORE_ID NOT NULLINT商店惟一標識符LOCATIONCHAR(15)商店位置DISTRICTCHAR(15)商店所屬街區REGIONCHAR(15)商店所屬區域事實表 SALES_FACT 包含 2006 年的總體銷售信息。它包括產品售出日期、產品 ID、銷售該產品的商店的 ID、售出的特定產品的數量,以及產品的價格。事實表中還添加了 TRANSACTION_DETAILS 列,以便在從事實表中訪問數據時生成更多的 I/O。維度表 DATE_DIM 包含商店開放期間的惟一的日期和相應的月份、季度和年份信息。維度表 PRODUCT_DIM 包含公司所銷售的不同產品。每種產品有一個惟一的產品 ID 和一個產品描述、型號以及質地。維度表 STORE_DIM 包含不同的商店 ID 和商店的位置、所屬街區以及所屬區域等信息。數據庫分區信息數據庫分區組名 數據庫分區數 FACT_GROUP0,1,2,3DATE_GROUP1PRODUCT_GROUP2STORE_GROUP3各表都位于它自己的分區組中。3 個維度表都比較小,所以它們位于一個數據庫分區上。而事實表則跨 4 個分區。表空間信息表空間名 數據庫分區組 表 FACT_SMSFACT_GROUPSALES_FACTDATE_SMSDATE_GROUPDATE_DIMPRODUCT_SMSPRODUCT_GROUPPRODUCT_DIMSTORE_SMSSTORE_GROUPSTORE_DIM各表都位于自己的表空間中。還有一種常見的方法是將這 3 個維度表放在同一個表空間中。緩沖池信息本文中的測試所使用的默認緩沖池是 IBMDEFAULTBP,該緩沖池由 1,000 個 4K 的頁面組成。在本文的測試中,所有表空間共享這個緩沖池。在通常的 BI 環境中,會創建不同的緩沖池。主查詢下面的查詢用于測試本文中討論的各種不同的方法。該查詢執行一個向外連接,比較二月份和十一月份 10 家商店的銷售信息。清單 2. 主查詢 [Query1.sql]WITH TMP1 (MONTH_1,STORE,REGION,DISTRICT,AMOUNT_1) AS( SELECT D.MONTH AS MONTH, S.STORE_ID AS STORE_ID, S.DISTRICT AS DISTRICT, S.REGION AS REGION, SUM(F1.QUANTITY * F1.PRICE) AS AMOUNT FROM SKAPOOR.SALES_FACT F1, SKAPOOR.DATE_DIM D, SKAPOOR.PRODUCT_DIM P, SKAPOOR.STORE_DIM S WHERE P.MODEL LIKE '%model%' AND F1.DATE_ID=D.DATE_ID AND F1.PRODUCT_ID=P.PRODUCT_ID AND F1.STORE_ID=S.STORE_ID AND F1.DATE_ID BETWEEN '2006-01-01' AND '2006-01-31' AND F1.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND D.MONTH = 1 GROUP BY S.STORE_ID,S.DISTRICT,S.REGION,D.MONTH) ,TMP2 (MONTH_11,STORE,REGION,DISTRICT,AMOUNT_11) AS( SELECT D1.MONTH AS MONTH, S1.STORE_ID AS STORE_ID, S1.DISTRICT AS DISTRICT, S1.REGION AS REGION, SUM(F2.QUANTITY * F2.PRICE) AS AMOUNT FROM SKAPOOR.SALES_FACT F2, SKAPOOR.DATE_DIM D1, SKAPOOR.PRODUCT_DIM P1, SKAPOOR.STORE_DIM S1 WHERE P1.MODEL LIKE '%model%' AND F2.DATE_ID=D1.DATE_ID AND F2.PRODUCT_ID=P1.PRODUCT_ID AND F2.STORE_ID=S1.STORE_ID AND F2.DATE_ID BETWEEN '2006-11-01' AND '2006-11-30' AND F2.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND D1.MONTH=11 GROUP BY S1.STORE_ID,S1.DISTRICT,S1.REGION,D1.MONTH)SELECT A.*, B.*FROM TMP1 A LEFT OUTER JOIN TMP2 B ON  (A.STORE=B.STORE AND A.REGION=B.REGION AND A.DISTRICT=B.DISTRICT)ORDER BY A.AMOUNT_1 DESC, B.AMOUNT_11 DESC;環境設置本文的測試是使用以下環境執行的:清單 3. db2levelDB2 9 Enterprise Edition:DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL09010" withlevel identifier "02010107".Informational tokens are "DB2 9.1.0.356", "s060629", "NT32", and Fix Pack "0".Product is installed at "C:PROGRA~1IBMSQLLIB" with DB2 Copy Name "DB2COPY1".清單 4. 操作系統System: WIN32_NT SKAPOOR Service Pack 2 5.1 x86 Family 15, model 4, stepping 3清單 5. 硬件CPU: total:2 online:2 Cores per socket:1 Threading degree per core:2Physical Memory(MB): total:2551 free:1988 available:1949Virtual Memory(MB): total:4950 free:6575Swap Memory(MB): total:2399 free:45871 Physical disk Size 100GB空間需求為了重新創建本文中描述的所有測試用例,需要高達 20Gb 的磁盤空間來存放數據和日志文件。其中將近 13Gb 的空間要分配給日志文件。我們要使用循環日志記錄,分配 100 個主日志:清單 6. 用于日志的數據庫配置Log file size (4KB) (LOGFILSIZ) = 8192Number of primary log files(LOGPRIMARY) = 100Number of secondary log files  (LOGSECOND) = 150略加修改為事實表填充數據的腳本,即可減少日志文件所需的磁盤空間。本文的后面將對此進行討論。設置數據庫第一步是創建一個測試數據庫。在本文的測試中,創建了 4 個邏輯數據分區。在 etcservices 文件中,應確保有足夠的端口用于創建 4 個數據分區。在我們的測試環境中,文件 C:WINDOWSsystem32driversetcservices 中包含關于實例 "DB2" 的以下內容:清單 7. services 文件的內容DB2_DB2  60000/tcpDB2_DB2_1 60001/tcpDB2_DB2_2 60002/tcpDB2_DB2_END  60003/tcpDB2c_DB2 50000/tcp為向實例添加數據庫分區,可使用 DB2 CLP 執行以下命令:清單 8. 使用 db2ncrt 命令創建數據庫分區db2stopdb2ncrt /n:1 /u:username,password /i:DB2 /m:machine /p:1db2ncrt /n:2 /u:username,password /i:DB2 /m:machine /p:2db2ncrt /n:3 /u:username,password /i:DB2 /m:machine /p:3其中 /u 選項所表示的用戶名和密碼,/m 選項所表示的計算機名,以及 /i 選項所表示的實例名應該根據您自己的環境加以修改。創建數據庫創建數據庫 DSS_DB。這里使用 D: 盤存儲該數據庫。請根據您自己的環境進行調整。清單 9. 創建數據庫的命令db2 create database dss_db on D:;數據庫和數據庫治理器是使用下面的設置來配置的。db2_all 工具用于設置所有數據庫分區上的數據庫配置和數據庫治理器配置。清單 10. 更新數據庫治理器配置的語句db2_all update dbm cfg using cpuspeed 2.282997e-007 intra_parallel NO comm_bandwidth 100.000000db2_all update db cfg for DSS_DB using locklist 2450 dft_degree 1 maxlocks 60  avg_appls 1 stmtheap 16384 dft_queryopt 5創建數據庫分區組和表空間使用以下語句創建數據庫分區組和表空間。可以將這些語句復制到一個名為 STORAGE.ddl 的文件中,然后使用下面的命令執行它們:db2 -tvf STORAGE.ddl -z storage.log清單 11. 創建數據庫分區組和表空間的語句CONNECT TO DSS_DB;---------------------------------------------------- DDL Statements for DATABASE PARTITION GROUPS ----------------------------------------------------CREATE DATABASE PARTITION GROUP "FACT_GROUP" ON DBPARTITIONNUMS(0,1,2,3);CREATE DATABASE PARTITION GROUP "DATE_GROUP" ON DBPARTITIONNUMS(1);CREATE DATABASE PARTITION GROUP "PRODUCT_GROUP" ON DBPARTITIONNUMS(2);CREATE DATABASE PARTITION GROUP "STORE_GROUP" ON DBPARTITIONNUMS(3);COMMIT WORK;-------------------------------------- DDL Statements for TABLESPACES --------------------------------------CREATE REGULAR TABLESPACE FACT_SMS IN DATABASE PARTITION GROUP FACT_GROUPPAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasefact_tbsp0') ON DBPARTITIONNUMS (0)USING ('d:databasefact_tbsp1') ON DBPARTITIONNUMS (1)USING ('d:databasefact_tbsp2') ON DBPARTITIONNUMS (2)USING ('d:databasefact_tbsp3') ON DBPARTITIONNUMS (3)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE DATE_SMS IN DATABASE PARTITION GROUPDATE_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasedate_group') ON DBPARTITIONNUMS (1)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE PRODUCT_SMS IN DATABASE PARTITION GROUPPRODUCT_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databaseproduct_group') ON DBPARTITIONNUMS (2)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;CREATE REGULAR TABLESPACE STORE_SMS IN DATABASE PARTITION GROUPSTORE_GROUP PAGESIZE 4096 MANAGED BY SYSTEMUSING ('d:databasestore_group') ON DBPARTITIONNUMS (3)EXTENTSIZE 32PREFETCHSIZE AUTOMATICBUFFERPOOL IBMDEFAULTBPOVERHEAD 7.500000TRANSFERRATE 0.060000NO FILE SYSTEM CACHING DROPPED TABLE RECOVERY ON;COMMIT WORK;-- Mimic tablespaceALTER TABLESPACE SYSCATSPACE PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;ALTER TABLESPACE TEMPSPACE1 PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;ALTER TABLESPACE USERSPACE1 PREFETCHSIZE AUTOMATIC OVERHEAD 7.500000 TRANSFERRATE 0.060000;COMMIT WORK;-------------------------------------------------- Update the bufferpool to use 1000 4K pages --------------------------------------------------ALTER BUFFERPOOL IBMDEFAULTBP SIZE 1000;COMMIT WORK;CONNECT RESET;注重:表空間被定義為 "NO FILE SYSTEM CACHING",以避免文件系統緩存歪曲測試各種方法時得到的評測結果。使用 db2batch 工具評測性能db2batch 程序用于運行 清單 2 中的主查詢。為了使用 db2batch 命令運行該查詢,需要將查詢保存在一個以分號結尾的文件中,并使用以下選項,使 db2batch 工具查看計時情況:清單 12. 使用 db2batch 評測查詢的性能db2batch -d <dbname> -f <input_file> -i <elapsed_time> -iso <isolation level>-o p <perf_detail> o <optlevel> r <rows_out> -r <result_file>其中 <dbname> 是數據庫名稱,<input_file> 是以分號結尾、包含查詢的文件。-iso <isolation level>:在我們的測試中,默認隔離級別是 CS,但是默認情況下 db2batch 工具使用隔離級別 RR。假如使用隔離級別 RR 執行一個查詢,那么使用隔離級別 CS 創建的 MQT 不會被考慮。為了解決這個問題,可以在 db2batch 命令中使用 -iso 選項和隔離級別 CS,以便查詢選擇 MQT。而且,應用程序可使用默認的 CS 隔離級別,不帶 -iso 選項運行 db2batch 會導致它使用 RR 隔離級別,并可能導致鎖爭用。-o - options options:p <perf_detail>: 性能具體信息。返回數據庫治理器、數據庫、應用程序和語句的快照(只有在自動提交關閉,且處理的是單個語句,而非語句塊時,才返回語句快照)。另外還返回緩沖池、表空間和 FCM的快照(只有在多數據庫分區環境中才會返回 FCM 快照)。 對于例子 p 5,我們使用最具體的輸出,但是也可以使用不同級別的性能輸出。o <optlevel>: 查詢優化級別。(本文使用優化級別 5,這里不需要顯式地指定這個優化級別,因為它是數據庫的默認優化級別,如 清單 10 所示。)r <rows_out>: 所獲取且將發送到輸出的行數。我們的例子 r 0 不發送行。-r <result_file>: 結果文件。在我們的例子中,results.txt 是輸出文件名,db2batch 將結果輸出到該文件中。在本文中,我們使用:db2batch -d DSS_DB -f QUERY1.SQL -i complete -iso CS -o p 5 o 5 r 0 -r <output filename>提高查詢性能的方法在本節中,讓我們逐步了解用于提高 清單 2 中描述的查詢的性能的各種不同方法。在討論任何方法之前,必須創建基本的事實表和維度表。步驟 A:創建好表空間之后,就要創建事實表和維度表。可以將 SKAPOOR 改為符合您自己環境的模式名。這樣做時,務必更新 清單 2 中的查詢,以反映適當的模式名。可以將下面的語句復制到一個名為 TEST1.ddl 的文件中,然后使用以下命令來執行該文件:db2 -tvf TEST1.ddl -z test1.log清單 13. TEST1.ddl 的內容CONNECT TO DSS_DB;----------------------------------------------------- DDL Statements for table "SKAPOOR "."SALES_FACT"---------------------------------------------------CREATE TABLE "SKAPOOR "."SALES_FACT" ( "DATE_ID" DATE , "PRODUCT_ID" INTEGER , "STORE_ID" INTEGER , "QUANTITY" INTEGER , "PRICE" INTEGER , "TRANSACTION_DETAILS" CHAR(100) )  DISTRIBUTE BY HASH("DATE_ID")   IN "FACT_SMS" ;--------------------------------------------------- DDL Statements for table "SKAPOOR "."DATE_DIM"-------------------------------------------------CREATE TABLE "SKAPOOR "."DATE_DIM" ( "DATE_ID" DATE NOT NULL , "MONTH" INTEGER , "QUARTER" INTEGER , "YEAR" INTEGER )  IN "DATE_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."DATE_DIM"-- DATE_ID is the unique identifierALTER TABLE "SKAPOOR "."DATE_DIM"ADD PRIMARY KEY("DATE_ID");------------------------------------------------------ DDL Statements for table "SKAPOOR "."PRODUCT_DIM"----------------------------------------------------CREATE TABLE "SKAPOOR "."PRODUCT_DIM" ( "PRODUCT_ID" INTEGER NOT NULL , "PRODUCT_DESC" CHAR(20) , "MODEL" CHAR(10) , "MAKE" CHAR(10) )  IN "PRODUCT_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."PRODUCT_DIM"-- PRODUCT_ID is the unique identifierALTER TABLE "SKAPOOR "."PRODUCT_DIM"ADD PRIMARY KEY("PRODUCT_ID");---------------------------------------------------- DDL Statements for table "SKAPOOR "."STORE_DIM"--------------------------------------------------CREATE TABLE "SKAPOOR "."STORE_DIM" ( "STORE_ID" INTEGER NOT NULL , "LOCATION" CHAR(15) , "DISTRICT" CHAR(15) , "REGION" CHAR(15) )  IN "STORE_SMS" ;-- DDL Statements for primary key on Table "SKAPOOR "."STORE_DIM"-- STORE_ID is the unique identifierALTER TABLE "SKAPOOR "."STORE_DIM"ADD PRIMARY KEY("STORE_ID");COMMIT WORK;CONNECT RESET;步驟 B:創建好表后,將數據插入到三個維度表中,并根據您自己的環境調整模式:清單 14. 填充 DATE_DIM 表db2 -td@ -vf date_insert.txt -z date_insert.log清單 15. 填充 PRODUCT_DIM 表db2 -td@ -vf product_insert.txt -z product_insert.log清單 16. 填充 STORE_DIM 表db2 -td@ -vf store_insert.txt -z store_insert.log這三個文件的內容是:DATE_DIM 表被填入 2006 年所有 365 天的值。清單 17. date_insert.txt 的內容connect to dss_db@begin atomic declare cnt INT default 1; declare dat DATE default '01/01/2006'; declare yer INT default 2006; declare quart INT default 1;while (cnt <= 365) doif (int(dat + cnt DAYS)/100) between 200601 and 200603 then  set quart=1;elseif (int(dat + cnt DAYS)/100) between 200604 and 200606 then  set quart=2;elseif (int(dat + cnt DAYS)/100) between 200607 and 200609 then  set quart=3;elseif (int(dat + cnt DAYS)/100) between 200610 and 200612 then  set quart=4;end if;insert into SKAPOOR.DATE_DIM values (dat + cnt DAYS,(int(dat + cnt DAYS)/100) - 200600,quart,yer); set cnt=cnt+1;end while;end@connect reset@PRODUCT_DIM 表被填入 60,000 種產品。清單 18. product_insert.txt 的內容connect to dss_db@drop sequence seq1@drop sequence seq2@create sequence seq1 as integer start with 1 increment by 1@create sequence seq2 as integer start with 1 increment by 1@begin atomic  declare cnt INT default 1;  while (cnt < 60001) doinsert into SKAPOOR.PRODUCT_DIM values (nextval for SEQ2,'product desc' concat char(nextval for SEQ1),'model ' concat char(integer(rand()*1000)),'maker ' concat char(integer(rand()*500)));set cnt=cnt+1;end while;end@drop sequence seq1@drop sequence seq2@connect reset@STORE_DIM 表被填入 201 家商店。清單 19. store_insert.txt 的內容connect to dss_db@drop sequence seq2@create sequence seq2 as integer start with 0 increment by 1@begin atomicdeclare cnt INT default 1;while (cnt < 202) do  insert into SKAPOOR.STORE_DIM values (nextval for SEQ2,'location' concat char(integer(rand()*500)),'district' concat char(integer(rand()*10)),'region' concat char(integer(rand()*5))  );  set cnt=cnt+1;end while;end@drop sequence seq2@connect reset@步驟 C:將數據插入到 SALES_FACT 表中。根據您自己的環境調整模式。在我們的測試環境中,將數據插入到事實表花了約一個半小時的時間。清單 20. 填充 SALES_FACT 表db2 -td@ -vf sales_fact_insert.ddl -z sales_fact_insert.log清單 21. sales_fact_insert.ddl 的內容connect to dss_db@VALUES (CURRENT TIMESTAMP)@begin atomic  declare cnt INT default 1;  declare cnt1 INT default 1;  declare dat DATE default '01/01/2006';  while (cnt <= 365) doINSERT INTO SKAPOOR.SALES_FACTwith v(DATE_ID, PRODUCT_ID, STORE_ID, QUANTITY, PRICE, TRANSACTION_DETAILS, U_ID) as (values(dat + CNT1 DAYS, 1, 1, 1, 1, '', 1) union all select DATE_ID, int(rand()*59999) + 1, int(rand()*200), int(rand()*50) + 1, INT(RAND()*200 + 1), RESERVE, U_ID + 1 from  v where U_ID < 60000) select date_id, product_id, store_id, quantity, price, transaction_details from v; set cnt1 = cnt1 + 1; set cnt = cnt + 1;  end while;end@VALUES (CURRENT TIMESTAMP)@connect reset@注重:在 清單 21 中,SALES_FACT 表是在一次事務處理中填充的,這需要大量的磁盤空間來作日志記錄。為了降低日志記錄的影響,可以創建一個存儲過程,并分步提交插入內容:清單 22. 填充 SALES_FACT 表的另一種方法connect to dss_db@VALUES (CURRENT TIMESTAMP)@-- Create a procedure to populate the SALES_FACT table-- committing the inserts in stages to reduce the impact-- of loggingcreate procedure salesFactPopulate()specific salesFactPopulatelanguage sqlbegin  declare cnt INT default 1;  declare cnt1 INT default 1;  declare dat DATE default '01/01/2006';  while (cnt <= 365) doINSERT INTO SKAPOOR.SALES_FACTwith v(DATE_ID, PRODUCT_ID, STORE_ID, QUANTITY, PRICE, TRANSACTION_DETAILS, U_ID) as(  values(dat + CNT1 DAYS, 1, 1, 1, 1, '', 1) union all  select DATE_ID, int(rand()*59999) + 1, int(rand()*200), int(rand()*50) + 1, INT(RAND()*200 + 1), RESERVE, U_ID + 1 from vwhere U_ID < 60000)select date_id, product_id, store_id, quantity, price, TRANSACTION_DETAILS from v;commit work;set cnt1 = cnt1 + 1;set cnt=cnt+1;  end while;end@-- populate the SALES_FACT tableinvoke salesFactPopulate@VALUES (CURRENT TIMESTAMP)@connect reset@步驟 D:為了理解各種不同的方法對所選查詢訪問計劃的有怎樣的影響,我們需要解釋(Explain)查詢,以查看 DB2 查詢優化器選擇的訪問計劃。為此,可使用 EXPLAIN 工具,這要求存在 EXPLAIN 表。為了創建 EXPLAIN 表,執行以下步驟:1、進入 sqllibmisc 目錄所在的位置。2、在我們的測試環境中,這個位置為 "C:Program FilesIBMSQLLIBMISC"。3、執行 db2 connect to dss_db。4、執行 db2 -tvf EXPLAIN .DDL。
標簽: DB2 數據庫
主站蜘蛛池模板: 99这里只有精品视频 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 精品久久久久国产 | jizz中国zz女人18高潮 | 午夜妇女aaaa区片 | 国产激情偷乱视频一区二区三区 | 亚洲网站久久 | 九九免费观看全部免费视频 | 欧美日韩一级在线观看 | 中文字幕第一页在线视频 | 欧美日韩国产一级片 | 亚洲第一成人在线视频 | 一区二区三区影视 | 秋霞电影院午夜伦 | 久久成人在线 | 91视频综合 | 成人精品二区 | 久久九| 欧美一区二区三区在线观看 | 国产欧美一区二区精品性色 | 久久天堂 | 国产精品久久影院 | 成人免费一区二区三区视频网站 | 亚洲欧洲一区二区三区 | 在线观看成人国产 | 免费一区二区三区 | 欧美日韩三级在线 | 午夜精品亚洲日日做天天做 | 看片国产 | 亚洲国产高清高潮精品美女 | 日韩欧美不卡 | 亚洲视频在线看 | 久久久91精品国产一区二区三区 | 成人在线视频一区二区 | 一区二区中文字幕 | 国产一区二区在线播放 | av天空| 九九色影院 | 精品国产99 | 精品av| 麻豆亚洲| 欧美性猛交一区二区三区精品 | 欧美日韩在线一区 | 午夜影院黄色 | 中文一区| 国产欧美精品一区 | 国产精品久久久久久久久久99 | 99中文字幕 | 日韩成人不卡 | 国产在线一级片 | 免费成人在线观看 | 亚洲免费视频网站 | 免费成人av | 亚洲一区二区视频 | 亚洲精品自拍视频 | 国产激情 | 欧美激情自拍偷拍 | 国产真实精品久久二三区 | 午夜精品在线 | 在线a电影 | 91精品国产91综合久久蜜臀 | av大片 | 中文字幕在线观看免费 | 久久久久久免费毛片精品 | 国产精品久久久久久久久久久久久 | 国产成人av网站 | 亚洲国产成人在线观看 | 午夜久久久 | 国产人体视频 | 在线观看黄免费 | 国产精品一二三区 | 黄色毛片在线看 | 91精品欧美久久久久久动漫 | 国产精品日韩三级 | 日韩精品免费在线观看 | 亚洲中午字幕 | 国产精品18hdxxxⅹ在线 | 国产欧美精品区一区二区三区 | 国产成人片| 欧美一极视频 | 欧美黑人狂躁日本寡妇 | 一区二区中文字幕 | 日韩在线中文字幕 | 欧美精品一区二区三区在线四季 | 五月天婷婷社区 | 国产精品国产精品国产专区不片 | 一级特黄色大片 | 99精品一级欧美片免费播放 | 夜夜超碰 | 国产精品美女久久久久久不卡 | 国产伦精品一区二区三区四区视频 | 亚洲国产日本 | 性视屏| 欧美日韩国产在线观看 | 欧美精品亚洲 | 98久久久 | 日p视频免费看 | 91在线观看视频 | 久久久99久久 | 天堂中文字幕 | 国产亚洲精品精品国产亚洲综合 | 天天艹逼 | 在线观看av网站永久 | 国产成人精品999在线观看 | 久久夜夜 | 免费观看的av | 一区二区免费在线播放 | 久久综合九色综合欧美狠狠 | 国产欧美一区二区精品性色 | 久久久日韩精品一区二区三区 | 久久在线| 久久久av | 精品成人佐山爱一区二区 | 黄色毛片在线观看 | 午夜影院免费 | 国产一区91 | 日本欧美一区二区 | av片在线免费观看 | 日韩成人精品在线 | 久久伦理电影 | 欧美视频免费 | 日韩视频免费 | av天天干 | 欧美日韩视频在线第一区 | 日韩欧美在线一区二区 | а天堂中文官网 | 亚洲精品91 | 欧美一区二区视频 | 欧美激情精品久久久久 | 日日干日日操 | 国产 日韩 欧美 在线 | 亚洲国产视频一区 | 久久女人网 | 99re在线| 欧美日韩国产一区二区 | 美女又黄又免费 | 亚洲一级淫片 | 99日韩| 日韩在线中文字幕 | 久久久国产精品视频 | www.日韩在线视频 | 日韩国产一区二区 | 成人在线视频播放 | 特级丰满少妇一级aaaa爱毛片 | 在线欧美日韩 | 第一福利丝瓜av导航 | 国产精品久久一区性色av图片 | av高清在线免费观看 | 欧美日韩久久精品 | 999久久久| 91丨九色丨国产在线 | 中文字幕av亚洲精品一部二部 | 免费毛片网 | 91色在线观看 | 一区二区三区视频在线播放 | 一区二区视频在线 | 日韩成人在线视频 | 岛国av一区 | 97在线免费观看 | 精品久久久久久久久久久 | 黄色大片免费网址 | 欧美日韩一区二区三区在线观看 | 日本午夜影院 | 久视频在线观看 | 日韩精品免费在线视频 | 一级做a爰性色毛片免费1 | 羞羞视频在线观免费观看 | 久热精品视频 | 在线观看日韩精品 | 免费观看一级淫片 | 九色网址| 欧美视频在线播放 | 91在线| 国产精品热 | 中文字幕在线精品 | 久久天堂| 九九精品久久久 | 久久久二 | 国产精品久久电影观看 | 国产婷婷精品av在线 | 97国产精品| 欧美性一级 | 久久午夜影院 | 毛片免费观看视频 | 中文字幕在线永久在线视频 | 欧美一区二区三区在线观看 | 亚洲一区 中文字幕 | 欧美日韩成人在线播放 | 国产高清在线 | 美女逼网站 | av国产精品 | 中文字幕观看 | 在线免费视频成人 | 欧美精品成人一区二区在线 | 中文字幕三区 | 国产精品久久国产精品99 gif | 欧美成人综合在线 | 亚洲精品乱码久久久久膏 | 婷婷桃色网 | 亚洲aⅴ天堂av在线电影软件 | 日韩欧美国产一区二区 | 国产成人精品一区二区三区网站观看 | 久久久久久久久一区二区 | 成人高清在线 | 91久久久www播放日本观看 | 国产高清中文字幕 | 免费在线成人 | 麻豆freexxxx性91精品 | 亚洲精品高清视频 | 国产一区二区视频免费看 | 欧美日韩成人 | 国产精品福利午夜在线观看 | 久久亚洲精品综合 | 国产无套丰满白嫩对白 | 国产一区二区在线视频 | 日韩欧美在线中文字幕 | 久久久久国产成人精品亚洲午夜 | 中文字幕在线观看亚洲 | 韩国电影久久 | 精品亚洲一区二区三区 | 91精品一区二区三区久久久久久 | 欧美一区2区三区4区公司二百 | 91网站在线看 | 成人亚洲精品 | 久久亚洲天堂 | 久久99精品一区二区三区三区 | 亚洲精品一区在线观看 | 国产欧美日本 | 国产成人精品久久二区二区 | 亚洲精品影院 | 国产美女av | 日韩一区二区免费视频 | 在线播放一区二区三区 | 91免费视频 | 国产伦精品一区二区 | 国产精品免费观看 | 五月婷婷综合激情网 | 日日操综合 | 亚洲激情 欧美 | 欧美男人天堂 | 特级毛片在线大全免费播放 | 久久综合狠狠综合久久综合88 | 99伊人| 久久久久亚洲一区二区三区 | 国产精品久久久久久久久久久久久久 | 日本久久视频 | 国产精品高清一区二区 | 大胆裸体gogo毛片免费看 | 亚洲一区二区三区视频 | 成人网av | 日韩欧美一区二区三区免费观看 | 成人国产网站 | 国产精品禁久久精品 | 成人免费淫片aa视频免费 | 中文字幕一区日韩精品欧美 | 亚洲欧美日韩在线 | www.亚洲 | 国产精品久久综合 | 亚洲高清在线视频 | 欧美自拍视频 | 国产伦精品一区二区三区高清 | 不用播放器的免费av | 国产美女黄色片 | 日韩视频在线播放 | 成人h视频在线观看 | 亚洲国产成人av | 国产一区二区欧美 | 亚洲一二视频 | 欧美精品一区二区三区免费视频 | 大桥未久亚洲精品久久久强制中出 | 欧美99热 | 色综合天天| 久久精品视频免费 | 日韩成人在线观看视频 | 久久久av一区 | 免费看国产片在线观看 | 午夜免费观看视频 | 欧美成在线视频 | www.成人在线视频 | 欧美国产日韩一区 | 欧美一区二区三区黄色 | 久久99精品久久久久久琪琪 | 国产精品久久久久久久久晋中 | 日韩特黄一级欧美毛片特黄 | 福利影院在线观看 | 欧美高清视频一区 | 国产精品久久久久久久久 | 国产美女自拍视频 | 久久91精品国产 | 欧美日韩精品一区二区 | 久草青青 | 亚洲一区二区三区中文字幕 | 亚洲美女av在线 | 麻豆精品一区二区 | 久久精品一二三四 | 一色屋精品久久久久久久久久 | 中文字幕一区二区三区四区五区 | 精品中文字幕一区二区 | 国产乱人伦av在线a jizz久久久 www.亚洲 | 黄色毛片一级 | 日本中文字幕电影 | 久久久91 | 天天亚洲综合 | 国产精品国产三级国产a | 免费av电影网站 | 色视频网站在线观看 | 久久久欧美 | 亚洲男人的天堂网站 | 亚洲网在线 | 伊人一二三区 | 黄毛片网站 | 中文字幕69av | 欧美三级电影在线播放 | 成人av福利| 久久综合九色综合欧美狠狠 | av在线一区二区三区 | 亚洲成人精品 | 国产成人一区二区 | 国产精品jizz在线观看麻豆 | 欧美久久视频 | 97精品久久 | 日韩在线网 | 亚洲三级网站 | 精品一区二区三区四区五区 | 久久亚洲一区二区 | 国产 亚洲 网红 主播 | 一区二区三区在线观看视频 | 欧美一区二区伦理片 | 色www精品视频在线观看 | 狠狠av | 国产欧美日韩精品一区 | 古典武侠第一页久久777 | 亚洲精品乱码久久久久久蜜桃不爽 | 成人亚洲 | 亚洲成人免费av | 欧美日韩综合视频 | 日韩欧美二区 | 久久免费在线观看 | 日本一区二区三区四区不卡视频 | 中文字幕本久久精品一区 | 国产精品美女久久久久久不卡 | 色综合天天综合网国产成人网 | 天天天天天天天天干 | 欧美自拍视频 | 国产免费视频 | 精品久久国产 | 亚洲精品二区 | 欧美日韩精品一区二区三区 | 国产精品一区二区视频 | 欧美性影院 | 91麻豆视频 | 久久高清亚洲 | 亚洲一区在线日韩在线深爱 | 国产精品不卡一区 | 国产精品久久久久久亚洲调教 | 欧美在线视频一区二区 | 国内精品一级毛片国产99 | 国产成人一区二区三区 | 伊人一二三区 | 久久国产精品91 | 偷偷干夜夜拍 | av综合站| 一级黄色片美国 | 91香蕉视频 | 91最新 | 欧美三级在线视频 | 操久久 | 久久久噜噜噜www成人网 | 华人黄网站大全 | 一区二区精品在线 | 国产精品网站在线观看 | 亚洲第一成人在线视频 | 99精品一区二区 | 久久国| 欧美一区2区三区4区公司二百 | 国产男女做爰免费网站 | 亚洲国产婷婷香蕉久久久久久99 | 羞羞视频网站 | 久草青青| 国产免费看 | 国产h在线 | 亚洲一区二区三区视频 | 国产日产精品一区二区三区四区 | 国产女精品| 日韩欧美国产网站 | 久久久久亚洲精品国产 | 午夜精品一区二区三区免费视频 | 欧美精品日韩 | 国产成人精品免费视频大全最热 | 国产男女做爰免费网站 | 亚洲视频观看 | 国产日韩一区二区 | 亚洲一区二区三区在线播放 | 色吧一区| 午夜精品一区二区三区在线观看 | 狠久久 | 91色在线观看 | 久久都是精品 | 免费av在线 | 亚洲第一se情网站 | 欧美日韩免费在线 | 一级成人免费 | 福利二区视频 | 中文字幕 亚洲一区 | 亚洲成人国产精品 | 欧美在线播放一区二区三区 | 欧美成人一区二区三区片免费 | 在线观看欧美日韩视频 | 久久精品国产亚卅av嘿嘿 | 国产欧美久久久久久 | 国产精品久久久久久久久久妇女 | 亚洲av一级毛片 | 欧美一区免费 | 一区二区三区亚洲精品国 | 国产精品一区二区在线 | 一本大道综合伊人精品热热 | 亚洲 欧美 日韩 精品 | 成人乱人乱一区二区三区 | 九九热九九 | 亚洲精品高清视频 | 亚洲欧美一区二区三区在线 | 日韩3级 | 中文字幕亚洲一区二区va在线 | 国产精品成人在线观看 | 国产精品国产精品 | 精品一区二区三区四区五区 | 欧美在线免费 | 国产成人片 | 国产精品免费观看 | 黄在线看| 精品成人 | 99热精品国产 | 成人免费视频网站在线观看 | 欧美视频网站 | 国产亚洲精品一区二区 | 天天成人综合网 | 亚洲精品aaa | 亚洲精品亚洲人成人网 | 久艹精品| 欧美日韩精品亚洲 | 亚洲精品一区二区三区蜜桃久 | 激情一区二区三区 | 蜜桃comaaa| 国产操片 | 九九热精品免费视频 | 亚洲97 | 亚洲国产精品久久久久婷婷老年 | 日韩在线不卡 | 久久亚洲国产精品 | 亚洲国产精品久久久久久 | 日本一区二区不卡视频 | 欧美激情精品久久久久 | 性色在线 | 精品国产鲁一鲁一区二区三区 | 99亚洲精品| 国产精品视频免费观看 | 亚洲人久久 | 久久久久国产一区二区三区 | 国产一极片 | 免费观看国产视频在线 | 91精品国产人妻国产毛片在线 | 天天人人精品 | 国产精品美女久久久久久久久久久 | 一级黄色大片在线 | 亚洲一区 日韩精品 中文字幕 | 久久97视频 | 久久精品一级 | 国产视频中文字幕 | 色小妹三区 | 天天摸天天操 | 欧美国产高清 | 一区二区三区四区不卡视频 | 国产高清视频一区 | 亚洲乱码二区 | 午夜剧 | 成人夜晚看av | 中文字幕亚洲欧美精品一区四区 | 免费激情小视频 | 国产在线观 | 国产h视频在线观看 | 欧美精品成人一区二区在线 | 久久国产亚洲精品 | 亚洲电影在线观看 | 激情欧美一区二区 | 久久av一区二区三区亚洲 | 中文字幕av一区二区 | 黄色a视频 | 操她视频网站 | 97免费在线视频 | www.国产精 | 欧美一级特 | 韩国精品| 中文字幕日韩在线 | 婷婷激情在线 | 中文视频在线 | 中文字幕亚洲欧美日韩在线不卡 | 日韩免费高清视频 | 日韩一二| 成人一区二区在线 | 一色一黄视频 | 国产一区在线免费 | 在线观看亚洲大片短视频 | 日韩精品久久久 | 久久久亚洲精品中文字幕 | 欧美精品一区二区三区在线播放 | 伊人精品 | 亚洲第一视频 | av在线成人 | 亚洲一区二区免费 | 在线观看免费国产 | 一级做a爰片毛片 | 欧美日韩在线观看中文字幕 | 人人草天天草 | 国产私拍视频 | 国产精品日韩欧美一区二区 | 国产高清久久 | 伊人艹| 少妇一级淫免费放 | 日韩欧美一二三区 | 亚洲国产91 | 国产日韩欧美不卡 | 久久精选视频 | 成年人网站在线免费看 | 国产精品久久久久久久久 | 国产视频久久 | 成人免费影院 | 国产一区二区在线免费 | 久久久久国产亚洲日本 | 成人精品鲁一区一区二区 | 欧美xxxx片| 精品久久中文字幕 | 国产成人黄色 | 国产福利在线播放 | 日韩91 | 精品成人免费一区二区在线播放 | 久久综合色视频 | 成人亚洲| 亚洲精品一区在线观看 | 蜜桃免费一区二区三区 | 久久亚洲精品综合 | 国产精品久久久久久久久 | 夜本色| 亚洲精品乱码久久久久久蜜桃不爽 | 麻豆一区一区三区四区 | 欧美国产精品一区二区 | 六月婷婷综合 | 成人欧美一区二区三区黑人孕妇 | 久久色av| 色综合一区二区三区 | 日韩综合视频在线观看 | 色吧av| 日本视频中文字幕 | 精品亚洲一区二区三区 | 毛片免费观看 | 欧美国产日韩在线观看 | 国产成人影视 | 日韩一区二区福利 | www.久久久 | 色呦呦网站在线观看 | 日韩激情视频一区二区 | 国产精品一区二区三区四区 | 成人福利网 | 久草高清| 成人免费在线视频 | 久久成人综合网 | 在线三级电影 | 青青草99| 久热99| 国产综合精品一区二区三区 | 狠狠撸在线视频 | 精品成人在线 | 亚洲a人 | 精品国产91亚洲一区二区三区www | 日韩在线视频中文字幕 | 日韩欧美专区 | 在线视频亚洲 | 日本中文字幕一区 | 在线免费av观看 | 91精品久久久久久久久久入口 | 狠狠狠干| 欧美日韩精品一区二区三区四区 | 国产日韩欧美一区 | 天天操天天添 | 91精品国产综合久久久蜜臀图片 | 黄色片免费看. | 国产精品久久久久久中文字 | 一区二区三区免费看 | 色综合天天天天做夜夜夜夜做 | 亚洲精品一区中文字幕乱码 | 99久久婷婷国产综合精品电影 | 91视频爱爱 | 玖玖精品| 91视频电影| 亚洲综合色视频在线观看 | 国产成人av在线 | 久久久久久久久久久久国产精品 | 久草免费在线 | a视频在线免费观看 | 99re视频在线观看 | 国产a√ | 亚洲精品一区久久久久久 | 国产一区二区三区色淫影院 | 操人视频网站 | 亚洲视频免费在线 | 在线看一区二区 | av免费看在线 | 91精品国产91久久久久游泳池 | 日韩精品在线视频 | 久草视频免费看 | 亚洲 精品 综合 精品 自拍 | 男女啪啪高清无遮挡 | 亚洲第一色片 | 久久av网 | 玖玖在线精品 | 欧美成人综合 |