日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Oracle12c新特性之如何檢測(cè)有用的多列統(tǒng)計(jì)信息詳解

Oracle 12c新特性探索:多列統(tǒng)計(jì)信息的檢測(cè)與應(yīng)用詳解

技術(shù)內(nèi)容:

在Oracle數(shù)據(jù)庫(kù)中,統(tǒng)計(jì)信息對(duì)于優(yōu)化器來(lái)說(shuō)至關(guān)重要,優(yōu)化器根據(jù)統(tǒng)計(jì)信息來(lái)選擇最佳的執(zhí)行計(jì)劃,從而提高查詢(xún)性能,在Oracle 12c之前,數(shù)據(jù)庫(kù)只能收集單列的統(tǒng)計(jì)信息,而在Oracle 12c中,引入了多列統(tǒng)計(jì)信息(Multicolunm Statistics)的新特性,這使得優(yōu)化器能夠更加準(zhǔn)確地估計(jì)多列之間的相關(guān)性,進(jìn)而提高查詢(xún)性能,本文將詳細(xì)介紹如何檢測(cè)有用的多列統(tǒng)計(jì)信息及其在查詢(xún)優(yōu)化中的應(yīng)用。

多列統(tǒng)計(jì)信息簡(jiǎn)介

1、什么是多列統(tǒng)計(jì)信息?

多列統(tǒng)計(jì)信息是指同時(shí)收集兩列或多列之間的相關(guān)性統(tǒng)計(jì)信息,這有助于優(yōu)化器在處理多列條件查詢(xún)時(shí),更準(zhǔn)確地估計(jì)行數(shù),從而選擇更優(yōu)的執(zhí)行計(jì)劃。

2、多列統(tǒng)計(jì)信息的類(lèi)型

在Oracle 12c中,支持以下兩種類(lèi)型的多列統(tǒng)計(jì)信息:

(1)單表多列統(tǒng)計(jì)信息:針對(duì)單個(gè)表的兩列或多列收集統(tǒng)計(jì)信息。

(2)多表多列統(tǒng)計(jì)信息:針對(duì)多個(gè)表的兩列或多列收集統(tǒng)計(jì)信息。

3、多列統(tǒng)計(jì)信息的收集方法

可以使用DBMS_STATS包中的以下過(guò)程來(lái)收集多列統(tǒng)計(jì)信息:

(1)GATHER_TABLE_STATS:收集單表的多列統(tǒng)計(jì)信息。

(2)GATHER_SCHEMA_STATS:收集指定模式下的多表多列統(tǒng)計(jì)信息。

(3)GATHER_DATABASE_STATS:收集整個(gè)數(shù)據(jù)庫(kù)的多表多列統(tǒng)計(jì)信息。

如何檢測(cè)有用的多列統(tǒng)計(jì)信息

在實(shí)際應(yīng)用中,并非所有的多列統(tǒng)計(jì)信息都對(duì)優(yōu)化器有幫助,如何檢測(cè)哪些多列統(tǒng)計(jì)信息是有用的呢?以下方法可以幫助我們判斷:

1、使用SQL Access Advisor

SQL Access Advisor是一個(gè)基于成本的優(yōu)化工具,它可以分析SQL語(yǔ)句并推薦最優(yōu)的執(zhí)行計(jì)劃,通過(guò)運(yùn)行SQL Access Advisor,可以檢測(cè)當(dāng)前的多列統(tǒng)計(jì)信息是否有助于生成最優(yōu)的執(zhí)行計(jì)劃。

2、比較不同統(tǒng)計(jì)信息下的執(zhí)行計(jì)劃

通過(guò)比較在收集多列統(tǒng)計(jì)信息前后,同一SQL語(yǔ)句的執(zhí)行計(jì)劃,可以判斷多列統(tǒng)計(jì)信息是否對(duì)優(yōu)化器有幫助。

3、檢查統(tǒng)計(jì)信息的基數(shù)估計(jì)

通過(guò)查詢(xún)數(shù)據(jù)字典視圖,如DBA_TAB_COL_STATISTICS,查看多列統(tǒng)計(jì)信息的基數(shù)估計(jì)是否與實(shí)際值接近,如果接近,說(shuō)明多列統(tǒng)計(jì)信息對(duì)優(yōu)化器有幫助。

多列統(tǒng)計(jì)信息在查詢(xún)優(yōu)化中的應(yīng)用

下面通過(guò)一個(gè)示例來(lái)演示多列統(tǒng)計(jì)信息在查詢(xún)優(yōu)化中的應(yīng)用。

1、創(chuàng)建測(cè)試表

CREATE TABLE t1 (c1 NUMBER, c2 NUMBER, c3 NUMBER);
CREATE TABLE t2 (c1 NUMBER, c2 NUMBER, c3 NUMBER);
INSERT INTO t1 SELECT LEVEL, MOD(LEVEL, 5), MOD(LEVEL, 10) FROM dual CONNECT BY LEVEL <= 10000;
INSERT INTO t2 SELECT LEVEL, MOD(LEVEL, 5), MOD(LEVEL, 10) FROM dual CONNECT BY LEVEL <= 10000;
COMMIT;

2、收集單表多列統(tǒng)計(jì)信息

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(
    ownname => 'SCOTT',
    tabname => 'T1',
    method_opt => 'FOR COLUMNS (C1, C2, C3)',
    cascade => TRUE
  );
  DBMS_STATS.GATHER_TABLE_STATS(
    ownname => 'SCOTT',
    tabname => 'T2',
    method_opt => 'FOR COLUMNS (C1, C2, C3)',
    cascade => TRUE
  );
END;
/

3、查看執(zhí)行計(jì)劃

在收集多列統(tǒng)計(jì)信息之前,執(zhí)行以下查詢(xún):

SELECT * FROM t1, t2 WHERE t1.c1 = t2.c1 AND t1.c2 = t2.c2 AND t1.c3 = t2.c3;

查看執(zhí)行計(jì)劃,發(fā)現(xiàn)優(yōu)化器選擇了嵌套循環(huán)連接(NESTED LOOPS)。

在收集多列統(tǒng)計(jì)信息之后,再次查看執(zhí)行計(jì)劃,發(fā)現(xiàn)優(yōu)化器選擇了哈希連接(HASH JOIN),并且執(zhí)行性能有所提高。

4、分析原因

通過(guò)查詢(xún)數(shù)據(jù)字典視圖DBA_TAB_COL_STATISTICS,發(fā)現(xiàn)多列統(tǒng)計(jì)信息使得優(yōu)化器能夠更準(zhǔn)確地估計(jì)連接條件(t1.c1 = t2.c1, t1.c2 = t2.c2, t1.c3 = t2.c3)的基數(shù),優(yōu)化器選擇了更合適的連接方法(哈希連接),從而提高了查詢(xún)性能。

Oracle 12c的多列統(tǒng)計(jì)信息特性使得優(yōu)化器能夠更準(zhǔn)確地估計(jì)多列之間的相關(guān)性,進(jìn)而選擇更優(yōu)的執(zhí)行計(jì)劃,在實(shí)際應(yīng)用中,我們可以通過(guò)SQL Access Advisor、比較執(zhí)行計(jì)劃、檢查統(tǒng)計(jì)信息的基數(shù)估計(jì)等方法來(lái)檢測(cè)有用的多列統(tǒng)計(jì)信息,通過(guò)合理利用多列統(tǒng)計(jì)信息,可以提高查詢(xún)性能,優(yōu)化數(shù)據(jù)庫(kù)的整體性能。


網(wǎng)頁(yè)標(biāo)題:Oracle12c新特性之如何檢測(cè)有用的多列統(tǒng)計(jì)信息詳解
網(wǎng)站URL:http://www.dlmjj.cn/article/djedped.html