HTAP 深入探索指南
本指南介紹如何進(jìn)一步探索并使用 TiDB 在線事務(wù)與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP) 功能。
注意
如果你對 TiDB HTAP 功能還不太了解,希望快速試用體驗(yàn),請參閱快速上手 HTAP。
要快速了解 TiDB 在 HTAP 場景下的體系架構(gòu)與 HTAP 的適用場景,建議先觀看下面的培訓(xùn)視頻(時(shí)長 15 分鐘)。注意本視頻只作為學(xué)習(xí)參考,如需了解詳細(xì)的 HTAP 相關(guān)內(nèi)容,請參閱下方的文檔內(nèi)容。
HTAP 適用場景
TiDB HTAP 可以滿足企業(yè)海量數(shù)據(jù)的增產(chǎn)需求、降低運(yùn)維的風(fēng)險(xiǎn)成本、與現(xiàn)有的大數(shù)據(jù)棧無縫縫合,從而實(shí)現(xiàn)數(shù)據(jù)資產(chǎn)價(jià)值的實(shí)時(shí)變現(xiàn)。
以下是三種 HTAP 典型適用場景:
-
混合負(fù)載場景
當(dāng)將 TiDB 應(yīng)用于在線實(shí)時(shí)分析處理的混合負(fù)載場景時(shí),開發(fā)人員只需要提供一個(gè)入口,TiDB 將自動根據(jù)業(yè)務(wù)類型選擇不同的處理引擎。
-
實(shí)時(shí)流處理場景
當(dāng)將 TiDB 應(yīng)用于實(shí)時(shí)流處理場景時(shí),TiDB 能保證源源不斷流入系統(tǒng)的數(shù)據(jù)實(shí)時(shí)可查,同時(shí)可兼顧高并發(fā)數(shù)據(jù)服務(wù)與 BI 查詢。
-
數(shù)據(jù)中樞場景
當(dāng)將 TiDB 應(yīng)用于數(shù)據(jù)中樞場景時(shí),TiDB 作為數(shù)據(jù)中樞可以無縫連接數(shù)據(jù)業(yè)務(wù)層和數(shù)據(jù)倉庫層,滿足不同業(yè)務(wù)的需求。
如果想了解更多關(guān)于 TiDB HTAP 場景信息,請參閱?PingCAP 官網(wǎng)中關(guān)于 HTAP 的博客。
HTAP 架構(gòu)
在 TiDB 中,面向在線事務(wù)處理的行存儲引擎?TiKV?與面向?qū)崟r(shí)分析場景的列存儲引擎?TiFlash?同時(shí)存在,自動同步,保持強(qiáng)一致性。
更多架構(gòu)信息,請參考?TiDB HTAP 形態(tài)架構(gòu)。
HTAP 環(huán)境準(zhǔn)備
在深入探索 TiDB HTAP 功能前,請依據(jù)你的數(shù)據(jù)場景部署 TiDB 以及對應(yīng)的數(shù)據(jù)分析引擎。大數(shù)據(jù)場景 (100 T) 下,推薦使用 TiFlash MPP 作為 HTAP 的主要方案,TiSpark 作為補(bǔ)充方案。
-
TiFlash
-
如果已經(jīng)部署 TiDB 集群但尚未部署 TiFlash 節(jié)點(diǎn),請參閱擴(kuò)容 TiFlash 節(jié)點(diǎn)中的步驟在現(xiàn)有 TiDB 集群中添加 TiFlash 節(jié)點(diǎn)。
-
如果尚未部署 TiDB 集群,請使用?TiUP 部署 TiDB 集群,并在包含最小拓?fù)涞幕A(chǔ)上,同時(shí)增加 TiFlash 拓?fù)浼軜?gòu)。
-
在決定如何選擇 TiFlash 節(jié)點(diǎn)數(shù)量時(shí),請考慮以下幾種業(yè)務(wù)場景:
- 如果業(yè)務(wù)場景以 OLTP 為主,做輕量級的 Ad hoc OLAP 計(jì)算,通常部署 1 個(gè)或幾個(gè) TiFlash 節(jié)點(diǎn)就會產(chǎn)生明顯的加速效果。
- 當(dāng) OLTP 數(shù)據(jù)吞吐量對節(jié)點(diǎn) I/O 無明顯壓力時(shí),每個(gè) TiFlash 節(jié)點(diǎn)將會使用較多資源用于計(jì)算,這樣 TiFlash 集群可實(shí)現(xiàn)近似線性的擴(kuò)展能力。TiFlash 節(jié)點(diǎn)數(shù)量應(yīng)根據(jù)期待的性能和響應(yīng)時(shí)間調(diào)整。
- 當(dāng) OLTP 數(shù)據(jù)吞吐量較高時(shí)(例如寫入或更新超過千萬行/小時(shí)),由于網(wǎng)絡(luò)和物理磁盤的寫入能力有限,內(nèi)部 TiKV 與 TiFlash 之間的 I/O 會成為主要瓶頸,也容易產(chǎn)生讀寫熱點(diǎn)。此時(shí) TiFlash 節(jié)點(diǎn)數(shù)與 OLAP 計(jì)算量有較復(fù)雜非線性關(guān)系,需要根據(jù)具體系統(tǒng)狀態(tài)調(diào)整節(jié)點(diǎn)數(shù)量。
-
-
TiSpark
- 如果你的業(yè)務(wù)需要基于 Spark 進(jìn)行分析,請部署 TiSpark。具體步驟,請參閱?TiSpark 用戶指南。
HTAP 數(shù)據(jù)準(zhǔn)備
TiFlash 部署完成后并不會自動同步數(shù)據(jù),你需要指定需要同步到 TiFlash 的數(shù)據(jù)表。指定后,TiDB 將創(chuàng)建對應(yīng)的 TiFlash 副本。
- 如果 TiDB 集群中還沒有數(shù)據(jù),請先遷移數(shù)據(jù)到 TiDB。詳情請參閱數(shù)據(jù)遷移。
- 如果 TiDB 集群中已經(jīng)有從上游同步過來的數(shù)據(jù),TiFlash 部署完成后并不會自動同步數(shù)據(jù),而需要手動指定需要同步的表,詳情請參閱使用 TiFlash。
HTAP 數(shù)據(jù)處理
使用 TiDB 時(shí),你只需輸入 SQL 語句進(jìn)行查詢或者寫入需求。對于創(chuàng)建了 TiFlash 副本的表,TiDB 會依靠前端優(yōu)化器自由選擇最優(yōu)的執(zhí)行方式。
注意
TiFlash 的 MPP 模式默認(rèn)開啟。當(dāng)執(zhí)行 SQL 語句時(shí),TiDB 會通過優(yōu)化器自動判斷并選擇是否以 MPP 模式執(zhí)行。
- 如需關(guān)閉 MPP 模式,請將系統(tǒng)變量?tidb_allow_mpp?的值設(shè)置為 OFF。
- 如需強(qiáng)制使用 TiFlash 的 MPP 模式執(zhí)行查詢,請將系統(tǒng)變量?tidb_allow_mpp?和?tidb_enforce_mpp?的值設(shè)置為 ON。
- 如需查看 TiDB 是否選擇以 MPP 模式執(zhí)行,你可以通過 EXPLAIN 語句查看具體的查詢執(zhí)行計(jì)劃。如果 EXPLAIN 語句的結(jié)果中出現(xiàn) ExchangeSender 和 ExchangeReceiver 算子,表明 MPP 已生效。
HTAP 性能監(jiān)控
在 TiDB 的使用過程中,可以選擇以下方式監(jiān)控 TiDB 集群運(yùn)行情況并查看性能數(shù)據(jù)。
- TiDB Dashboard:查看集群整體運(yùn)行概況,分析集群讀寫流量分布及趨勢變化,詳細(xì)了解耗時(shí)較長的 SQL 語句的執(zhí)行信息。
- 監(jiān)控系統(tǒng) (Prometheus & Grafana):查看 TiDB 集群各組件(包括 PD、TiDB、TiKV、TiFlash、TiCDC、Node_exporter)的相關(guān)監(jiān)控參數(shù)。
如需查看 TiDB 和 TiFlash 集群報(bào)警規(guī)則和處理方法,請查閱?TiDB 集群報(bào)警規(guī)則和?TiFlash 報(bào)警規(guī)則。
HTAP 故障診斷
在使用 TiDB 的過程中如果遇到問題,請參閱以下文檔:
- 分析慢查詢
- 定位消耗系統(tǒng)資源多的查詢
- TiDB 熱點(diǎn)問題處理
- TiDB 集群故障診斷
- TiFlash 常見問題
除此之外,你可以在?Github Issues?新建一個(gè) Issue 反饋問題,或者在?AskTUG?提交你的問題。
總結(jié)
以上是生活随笔為你收集整理的HTAP 深入探索指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防静电包装材料应用越来越广泛,这些变化你
- 下一篇: 数据结构6:栈的应用(十进制转化为二进制