TiDB Explain執(zhí)行計(jì)劃

一.? ??PingCAP官網(wǎng)執(zhí)行算子的解釋。

? ??1.TableFullScan全表掃描.

? ??2.TableRangeScan帶有范圍的表數(shù)據(jù)掃描.

? ??3.TableRowIDScan:根據(jù)上層傳遞下來(lái)的 RowID 掃描表數(shù)據(jù)。時(shí)常在索引讀操作后檢索符合條件的行。

? ??4.IndexFullScan:另一種“全表掃描”,掃的是索引數(shù)據(jù),不是表數(shù)據(jù)。

? ??5.IndexRangeScan:帶有范圍的索引數(shù)據(jù)掃描操作。

? ??TiDB 會(huì)匯聚 TiKV/TiFlash 上掃描的數(shù)據(jù)或者計(jì)算結(jié)果,這種“數(shù)據(jù)匯聚”算子目前有如下幾類:

? ??1.TableReader:將 TiKV 上底層掃表算子 TableFullScan 或 TableRangeScan 得到的數(shù)據(jù)進(jìn)行匯總。

? ? 2.IndexReader:將 TiKV 上底層掃表算子 IndexFullScan 或 IndexRangeScan 得到的數(shù)據(jù)進(jìn)行匯總。

? ? 3.IndexLookUp:先匯總 Build 端 TiKV 掃描上來(lái)的 RowID,再去 Probe 端上根據(jù)這些RowID精確地讀取 TiKV 上的數(shù)據(jù)。Build 端是IndexFullScan或IndexRangeScan類型的算子,Probe 端是TableRowIDScan類型的算子。

? ? 4.IndexMerge:和IndexLookupReader類似,可以看做是它的擴(kuò)展,可以同時(shí)讀取多個(gè)索引的數(shù)據(jù),有多個(gè) Build 端,一個(gè) Probe 端。執(zhí)行過(guò)程也很類似,先匯總所有 Build 端 TiKV 掃描上來(lái)的 RowID,再去 Probe 端上根據(jù)這些 RowID 精確地讀取 TiKV 上的數(shù)據(jù)。Build 端是IndexFullScan或IndexRangeScan類型的算子,Probe 端是TableRowIDScan類型的算子。

二.? ? task解釋。

Cop task 是指使用 TiKV 中的 Coprocessor 執(zhí)行的計(jì)算任務(wù),root task 是指在 TiDB 中執(zhí)行的計(jì)算任務(wù)。

三.????operator info結(jié)果。

? ? 1.?range: [1,1]表示查詢的WHERE字句 (a = 1) 被下推到了 TiKV,對(duì)應(yīng)的 task 為cop[tikv]。

? ? 2.keep order:false表示該查詢的語(yǔ)義不需要 TiKV 按順序返回結(jié)果。如果查詢指定了排序(例如SELECT * FROM t WHERE a = 1 ORDER BY id),該字段的返回結(jié)果為keep order:true。

? ? 3.stats:pseudo表示estRows顯示的預(yù)估數(shù)可能不準(zhǔn)確。TiDB 定期在后臺(tái)更新統(tǒng)計(jì)信息。也可以通過(guò)執(zhí)行ANALYZE TABLE t來(lái)手動(dòng)更新統(tǒng)計(jì)信息。


四.????Explain analyze

Explain analyze是展示實(shí)際數(shù)的結(jié)果。結(jié)果可能有誤差

先執(zhí)行ANALYZE TABLE再執(zhí)行EXPLAIN ANALYZE,預(yù)估數(shù)與實(shí)際數(shù)會(huì)更接近

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容