MySQL Block Nested Loop and Batched Key Access Joins(塊嵌套迴圈和批量Key訪問串連)

來源:互聯網
上載者:User

標籤:

 

Block Nested-Loop and Batched Key Access Joins

      Batched Key Access (BKA) Join演算法通過index和join buffer訪問joined表,BKA演算法支援inner join,outer join 和semi join操作,包括嵌套的outer join,BKA的好處包括提高join效能(由於更有效率的table scan),同時,前文的Block Nested loop(BNL)join 演算法被擴充也支援這些join類型。

 

     Block Nested-Loop 

     MYSQL server提供了join buffer來執行沒有index的內連結,外串連,半串連的內表訪問子查詢,並且當通過index來訪問內表是join buffer更有效率。

     當儲存“感興趣的行列值”時,join buffer管理器更有效率的利用join buffer空間,如果行列值為null,join buffer 不會為之分配空間,並且最小化分配空間給varchar類型的資料;

     管理器支援兩種類型的buffer,常規的和增量式的,e.g.join buffer b1 應用在表t1和表t2的join,該join結果和表t3用b2做Join;

        1:常規的join buffer包含每個join運算元(table)的列,如果b2是一個常規的join buffer, join buffer b1中的每一行和 table t2相對應匹配行的組成的新行資料(包含t2剛興趣的列)全部被壓入b2之中;

        2:增量式 join buffer 只包含做join操作的內表中的資料行,因此,它作為第一個join buffer 的行的增量。如果b2是一個增量式的join buffer ,它包含內表剛興趣的行列資料和 join 

buffer b1對應行資料的一個引用;

      增量式 join buffers總是關於前面一個join操作的join buffer的相關增量,所以前面一個join 操作的join buffer往往是 常規 join buffer;join buffer b1用於table t1 和t2串連,其必須為常規join buffer;

      增量式join buffer 僅僅包含joined table(內表)的剛興趣的列,這些列被指定一個前一個join操作產生的table的行引用(也僅含有感興趣的列),增量式join buffer中的一些資料行引用那些儲存在前一個join buffer中的同一行資料(match success的);

      增量式join buffer保證小頻率的從前一個join buffer中copy 資料,這節省了join buffer的空間,因為在一般情況下,前一個join操作產生的行可能被該join操作的joined table的多行資料匹配,沒必要多次拷貝前一個join buffer的同一行資料,同時也減少處理時間。

      

      Batched Key Access Join

      當通過index來訪問做join操作的joined table時,批量key訪問串連被使用,和BNL演算法一樣,BKA join演算法應用join buffer來存放join操作第一個表中感興趣的行列值,

然後BKA演算法為join buffer中的所有行建立index來訪問second table,並且批量的提交這些indexes 給資料庫引擎來尋找這些index,這些index通過MRR(mutil range read)介面提交,

MRR引擎執行index尋找,擷取得到的資料,然後執行BKA匹配演算法獲得匹配行資料(refenece 前一JoinBufferd的行資料)

 

MySQL Block Nested Loop and Batched Key Access Joins(塊嵌套迴圈和批量Key訪問串連)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.