日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBase基于代價(jià)的路徑選擇

在基于規(guī)則的路徑選擇之后,如果存在多個(gè)可以選擇的路徑,那么 OceanBase 數(shù)據(jù)庫(kù)會(huì)計(jì)算每個(gè)路徑的代價(jià),并從中選擇代價(jià)最小的路徑作為最終選擇的路徑。

10年的惠陽(yáng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整惠陽(yáng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“惠陽(yáng)網(wǎng)站設(shè)計(jì)”,“惠陽(yáng)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

OceanBase 數(shù)據(jù)庫(kù)的代價(jià)模型考慮了 CPU 代價(jià)(比如處理一個(gè)謂詞的 CPU 開銷)和 IO 代價(jià)(比如順序、隨機(jī)讀取宏塊和微塊的代價(jià)),CPU 代價(jià)和 IO 代價(jià)最終相加得到一個(gè)總的代價(jià)。

在 OceanBase 數(shù)據(jù)庫(kù)中,每個(gè)訪問(wèn)路徑的代價(jià)會(huì)在執(zhí)行計(jì)劃中都會(huì)展示出來(lái)。如下例所示:


obclient>CREATE TABLE t1(a INT PRIMARY KEY, b INT, c INT, INDEX k1(b));
Query OK, 0 rows affected (0.35 sec)

/*主表路徑的代價(jià)*/
obclient>EXPLAIN SELECT/*+INDEX(t1 PRIMARY)*/ * FROM t1 WHERE b < 10;
+-----------------------------------------------------------------+
| Query Plan                                                                              |
+-----------------------------------------------------------------+
| ===================================
|ID|OPERATOR  |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|t1  |200      |622 |
===================================

Outputs & filters:
-------------------------------------
  0 - output([t1.a], [t1.b], [t1.c]), filter([t1.b < 10]),
      access([t1.b], [t1.a], [t1.c]), partitions(p0)

/* k1 路徑的代價(jià)*/
obclient> EXPLAIN SELECT/*+INDEX(t1 k1)*/ * FROM t1 WHERE b < 10;
+--------------------------------------------------------------------+
| Query Plan                                                                                   |
+--------------------------------------------------------------------+
| =====================================
|ID|OPERATOR  |NAME  |EST. ROWS|COST|
-------------------------------------
|0 |TABLE SCAN|t1(k1)|200      |1114|
=====================================

Outputs & filters:
-------------------------------------
  0 - output([t1.a], [t1.b], [t1.c]), filter(nil),
      access([t1.b], [t1.a], [t1.c]), partitions(p0)

對(duì)于一個(gè)訪問(wèn)路徑,它的代價(jià)主要由掃描訪問(wèn)路徑的代價(jià)和回表的代價(jià)兩部分組成。如果一個(gè)訪問(wèn)路徑不需要回表,那么就沒(méi)有回表的代價(jià)。

在 OceanBase 數(shù)據(jù)庫(kù)中,訪問(wèn)路徑的代價(jià)取決于很多因素,比如掃描的行數(shù)、回表的行數(shù)、投影的列數(shù)和謂詞的個(gè)數(shù)等。但是對(duì)于訪問(wèn)路徑來(lái)說(shuō),代價(jià)在很大程度上取決于行數(shù),所以在下面的示例分析中,從行數(shù)這個(gè)維度來(lái)介紹這兩部分的代價(jià)。

  • 掃描訪問(wèn)路徑的代價(jià)

    掃描訪問(wèn)路徑的代價(jià)跟掃描的行數(shù)成正比,理論上來(lái)說(shuō)掃描的行數(shù)越多,執(zhí)行時(shí)間就會(huì)越久。對(duì)于一個(gè)訪問(wèn)路徑,query range 決定了需要掃描的范圍,從而決定了需要掃描的行數(shù)。Query range 的掃描是順序 IO。

  • 回表的代價(jià)

    回表的代價(jià)跟回表的行數(shù)也也是正相關(guān)的,回表的行數(shù)越多(回表的行數(shù)是指滿足所有能在索引上執(zhí)行的謂詞的行數(shù)),執(zhí)行時(shí)間就會(huì)越長(zhǎng)。回表的掃描是隨機(jī) IO,所以回表一行的代價(jià)會(huì)比 query range 掃描一行的代價(jià)高很多。

當(dāng)分析一個(gè)訪問(wèn)路徑的性能的時(shí)候,可以從上面兩個(gè)因素入手,獲取通過(guò) query range 掃描的行數(shù)以及回表的行數(shù)。這兩個(gè)行數(shù)通??梢酝ㄟ^(guò)執(zhí)行 SQL 語(yǔ)句來(lái)獲取。

如下例所示,對(duì)于查詢 SELECT * FROM t1 WHERE c2 > 20 AND c2 < 800 AND c3 < 200,索引 k1 的訪問(wèn)路徑是,首先通常計(jì)劃展示來(lái)獲取用來(lái)抽取 query range 的謂詞,謂詞 c2 > 20 AND c2 < 800 用來(lái)抽取 query range,謂詞 c3 < 200 被當(dāng)成回表前的謂詞。那么可以使用如下兩個(gè)查詢來(lái)檢查 query range 抽取的行數(shù)以及回表之后的行數(shù)。


obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT, c4 INT, c5 INT, INDEX k1(c2,c3));
Query OK, 0 rows affected (0.26 sec)

obclient>EXPLAIN EXTENDED_NOADDR SELECT/*+INDEX(t1 k1)*/ * FROM t1 WHERE 
      c2 > 20 AND c2 < 800 AND c3 < 200;
+--------------------------------------------------------------+
| Query Plan                                                                          |
+--------------------------------------------------------------+
| =====================================
|ID|OPERATOR  |NAME  |EST. ROWS|COST|
-------------------------------------
|0 |TABLE SCAN|t1(k1)|156      |1216|
=====================================

Outputs & filters:
-------------------------------------
  0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c3 < 200]),
      access([t1.c2], [t1.c3], [t1.c1], [t1.c4], [t1.c5]), partitions(p0),
      is_index_back=true, filter_before_indexback[true],
      range_key([t1.c2], [t1.c3], [t1.c1]), range(20,MAX,MAX ; 800,MIN,MIN),
      range_cond([t1.c2 > 20], [t1.c2 < 800])

/*query range 掃描的行數(shù)*/
obclient>SELECT/*+INDEX(t1 k1)*/ COUNT(*) FROM t1 WHERE c2 > 20 AND c2 < 800;
+----------+
| count(*) |
+----------+
|      779 |
+----------+
1 row in set (0.02 sec)

/* 回表的行數(shù)*/
obclient> SELECT/*+INDEX(t1 k1)*/ COUNT(*) FROM t1 WHERE c2 > 20 AND c2 < 800
      AND c3 < 200;
+----------+
| count(*) |
+----------+
|      179 |
+----------+
1 row in set (0.01 sec)

本文題目:創(chuàng)新互聯(lián)OceanBase教程:OceanBase基于代價(jià)的路徑選擇
標(biāo)題路徑:http://www.5511xx.com/article/djdoios.html