TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實(shí)現(xiàn) HTAP 性能和穩(wěn)定性的新飛躍

“當(dāng)用戶使用軟件時(shí),會(huì)需要面對(duì)的兩個(gè)鴻溝:一個(gè)是執(zhí)行的鴻溝,在這里,用戶要弄清楚如何操作,與軟件「對(duì)話」;另一個(gè)是評(píng)估的鴻溝,用戶要弄清楚操作的結(jié)果。” PingCAP 聯(lián)合創(chuàng)始人兼 CTO 黃東旭在《做出讓人愛不釋手的基礎(chǔ)軟件》中提到,“ 我們作為設(shè)計(jì)師的使命就是幫助用戶消除可觀測性和可交互性這兩個(gè)鴻溝。”

2021 年 11 月 30 日,TiDB 5.3.0 版本正式上線,該版本推出持續(xù)性能分析 (Continuous Profiling) 功能(目前為實(shí)驗(yàn)特性),跨越可觀測性的鴻溝,為用戶帶來數(shù)據(jù)庫源碼水平的性能洞察,徹底解答每一個(gè)數(shù)據(jù)庫問題。

在提升數(shù)據(jù)可觀測性的同時(shí),TiDB 5.3.0 實(shí)現(xiàn)了 HTAP 性能和穩(wěn)定性的大幅提升,數(shù)據(jù)遷移效率、高可用性和易用性也實(shí)現(xiàn)了大幅提升,為所有用戶帶來重磅福利。

TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實(shí)現(xiàn) HTAP 性能和穩(wěn)定性的新飛躍

5.3.0 功能亮點(diǎn)與用戶價(jià)值

支持持續(xù)性能分析 (Continuous Profiling) ,引領(lǐng)數(shù)據(jù)庫的可觀測性潮流

深度優(yōu)化分布式時(shí)間戳獲取技術(shù),提升系統(tǒng)的整體性能

持續(xù)優(yōu)化存儲(chǔ)和計(jì)算引擎,提供更敏捷更可靠的 HTAP 服務(wù)

進(jìn)一步降低上游系統(tǒng)同步數(shù)據(jù)至 TiDB 的延遲,助力高峰期業(yè)務(wù)增長

新增并行導(dǎo)入功能,提升全量數(shù)據(jù)遷移效率

引入臨時(shí)表,一條 SQL 語句簡化業(yè)務(wù)邏輯并提升性能

支持持續(xù)性能分析,引領(lǐng)數(shù)據(jù)庫的可觀測性潮流

在企業(yè)遭遇的 IT 故障中,約有 30% 與數(shù)據(jù)庫相關(guān)。當(dāng)這些故障涉及到應(yīng)用系統(tǒng)、網(wǎng)絡(luò)環(huán)境、硬件設(shè)備時(shí),恢復(fù)時(shí)間可能達(dá)到數(shù)小時(shí),對(duì)業(yè)務(wù)連續(xù)性造成破壞,影響用戶體驗(yàn)甚至營收。在復(fù)雜分布式系統(tǒng)場景下,如何提高數(shù)據(jù)庫的可觀測性,幫助運(yùn)維人員快速診斷問題,優(yōu)化故障處理流程一直是困擾著企業(yè)的一大難題。在 TiDB 5.3.0 版本中,PingCAP 率先在數(shù)據(jù)庫領(lǐng)域推出了持續(xù)性能分析 (Continuous Profiling) 特性(目前為實(shí)驗(yàn)特性),為企業(yè)提供了數(shù)據(jù)庫源碼水平的性能洞察。

持續(xù)性能分析以低于 0.5% 的性能損耗實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫內(nèi)部運(yùn)行狀態(tài)持續(xù)打快照(類似 CT 掃描),以火焰圖的形式從系統(tǒng)調(diào)用層面解讀資源開銷。讓原本黑盒的數(shù)據(jù)庫變成白盒。在 TiDB Dashboard 上一鍵開啟持續(xù)性能分析后,運(yùn)維人員可以方便快速定位性能問題的根因,無論過去現(xiàn)在皆可回溯。

TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實(shí)現(xiàn) HTAP 性能和穩(wěn)定性的新飛躍

當(dāng)數(shù)據(jù)庫意外宕機(jī)時(shí),可降低至少 50% 診斷時(shí)間

在互聯(lián)網(wǎng)行業(yè)的一個(gè)案例中,當(dāng)客戶集群出現(xiàn)報(bào)警業(yè)務(wù)受影響時(shí),因缺少數(shù)據(jù)庫連續(xù)性能分析結(jié)果,運(yùn)維人員難以發(fā)現(xiàn)故障根因,耗費(fèi) 3 小時(shí)才定位問題恢復(fù)集群。如果使用 TiDB 的持續(xù)性能分析功能,運(yùn)維人員可比對(duì)日常和故障的分析結(jié)果,僅需 20 分鐘就可恢復(fù)業(yè)務(wù),極大減少損失。

在日常運(yùn)行中,可提供集群巡檢和性能分析服務(wù),保障集群持續(xù)穩(wěn)定運(yùn)行

持續(xù)性能分析是 TiDB 集群巡檢服務(wù)的關(guān)鍵,為商業(yè)客戶提供了集群巡檢和巡檢結(jié)果數(shù)據(jù)上報(bào)??蛻艨梢宰孕邪l(fā)現(xiàn)和定位潛在風(fēng)險(xiǎn),執(zhí)行優(yōu)化建議,保證每個(gè)集群持續(xù)穩(wěn)定運(yùn)行。

在數(shù)據(jù)庫選型時(shí),提供更高效的業(yè)務(wù)匹配

在進(jìn)行數(shù)據(jù)庫選型時(shí),企業(yè)往往需要在短時(shí)間內(nèi)完成功能驗(yàn)證、性能驗(yàn)證的流程。持續(xù)性能分析功能能夠協(xié)助企業(yè)更直觀地發(fā)現(xiàn)性能瓶頸,快速進(jìn)行多輪優(yōu)化,確保數(shù)據(jù)庫與企業(yè)的業(yè)務(wù)特征適配,提高數(shù)據(jù)庫的選型效率。

注:性能分析結(jié)果存儲(chǔ)在監(jiān)控節(jié)點(diǎn)上,不會(huì)對(duì)處理業(yè)務(wù)流量的節(jié)點(diǎn)產(chǎn)生影響。

深度優(yōu)化分布式時(shí)間戳獲取技術(shù),為海量業(yè)務(wù)數(shù)據(jù)處理提供堅(jiān)強(qiáng)后盾

當(dāng)互聯(lián)網(wǎng)行業(yè)的核心業(yè)務(wù)系統(tǒng)具有龐大的用戶數(shù)量和業(yè)務(wù)數(shù)據(jù)時(shí),在高并發(fā)訪問的場景下,可能會(huì)出現(xiàn)數(shù)據(jù)庫時(shí)間戳獲取延遲增大而導(dǎo)致業(yè)務(wù)響應(yīng)變慢、超時(shí)頻發(fā)、用戶體驗(yàn)急劇下降的情況。海量的業(yè)務(wù)數(shù)據(jù)要求數(shù)據(jù)庫擁有良好的擴(kuò)展性。TiDB 本身擁有能夠水平擴(kuò)展的優(yōu)勢,但是不斷增長的業(yè)務(wù)數(shù)據(jù)量使時(shí)間戳獲取能力逐漸成為阻礙集群擴(kuò)展的瓶頸,最終限制集群整體的擴(kuò)展。

為進(jìn)一步提升時(shí)間戳獲取能力,在 TiDB 5.3.0 版本中,TiDB 在保持原有的全局時(shí)間戳管理方式的基礎(chǔ)上,新增兩個(gè)時(shí)間戳處理調(diào)優(yōu)參數(shù),在 PD 負(fù)載達(dá)到瓶頸的情況下,可以有效減輕負(fù)載,降低了時(shí)間戳獲取延遲,大大提升了系統(tǒng)的整體性能:

支持參數(shù)設(shè)置 PD follower proxy 開關(guān),開啟后允許 follower 批量轉(zhuǎn)發(fā)時(shí)間戳處理請(qǐng)求。

支持設(shè)置 PD client 批量處理時(shí)間戳的最大等待時(shí)間參數(shù),提高時(shí)間戳請(qǐng)求的處理帶寬。

通過本次優(yōu)化,TiDB 能夠更好地支撐百 TB 或百萬 QPS 大規(guī)模集群的擴(kuò)展。經(jīng)過 Sysbench 512 線程的測試驗(yàn)證,時(shí)間戳處理流程優(yōu)化后,TiDB 集群整體 QPS 吞吐提升了 100% 以上。

具體測試環(huán)境如下:

TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實(shí)現(xiàn) HTAP 性能和穩(wěn)定性的新飛躍

本次優(yōu)化適用于以下場景:

擁有百 TB 或 百萬 QPS 以上超大規(guī)模集群,需要實(shí)現(xiàn)大規(guī)模集群的擴(kuò)展。

擁有中等規(guī)模集群,但隨著業(yè)務(wù)的急速增長,數(shù)據(jù)的成倍增加,需要實(shí)現(xiàn)集群的無限擴(kuò)展。

持續(xù)優(yōu)化存儲(chǔ)和計(jì)算引擎,提供更敏捷更可靠的 HTAP 服務(wù)

在大型物流和金融服務(wù)類企業(yè)中,在線交易和實(shí)時(shí)業(yè)務(wù)監(jiān)控等應(yīng)用場景對(duì)數(shù)據(jù)有較高的一致性和時(shí)效性要求,尤其是當(dāng)讀寫混合負(fù)載大時(shí),會(huì)對(duì)數(shù)據(jù)庫管理系統(tǒng)的性能和穩(wěn)定性形成較大挑戰(zhàn)。在年度流量峰值時(shí)段,數(shù)據(jù)平臺(tái)的寫入/更新和分析任務(wù)往往會(huì)激增數(shù)倍。例如,某合作伙伴(物流龍頭)在雙十一期間,每天處理超 2500 億條更新和插入記錄,同時(shí)還要兼顧海量歷史數(shù)據(jù)(50 億~100 億)的分析任務(wù)。

TiDB HTAP 致力于為企業(yè)的規(guī)?;诰€交易和實(shí)時(shí)分析應(yīng)用提供一棧式數(shù)據(jù)服務(wù)平臺(tái),提升關(guān)鍵業(yè)務(wù)的時(shí)效性,降低數(shù)據(jù)技術(shù)棧的復(fù)雜性。在已有產(chǎn)品基礎(chǔ)上,TiDB 5.3.0 進(jìn)一步優(yōu)化了 HTAP 的性能和穩(wěn)定性,大幅改善了高混合負(fù)載場景下并發(fā)查詢能力和查詢?nèi)蝿?wù)的執(zhí)行速度。主要的改進(jìn)包括:

性能大幅提升(50%~100%),CPU /內(nèi)存資源使用率進(jìn)一步優(yōu)化,查詢失敗減少:TiDB 5.3.0 優(yōu)化了列式存儲(chǔ)引擎,調(diào)整了存儲(chǔ)引擎底層文件結(jié)構(gòu)和 IO 模型,優(yōu)化了訪問節(jié)點(diǎn)副本和文件區(qū)塊的計(jì)劃,緩和了寫放大問題以及改進(jìn)了普遍的代碼效率??傮w上高負(fù)載時(shí)因資源不足造成的失敗狀況大大緩解。

遠(yuǎn)程數(shù)據(jù)讀取提速,任務(wù)成功率提高,告警可讀性增強(qiáng):優(yōu)化了 MPP 計(jì)算引擎,支持更多的字符串/時(shí)間和其他函數(shù)/算子下推至 MPP 引擎,并改善了存儲(chǔ)層寫入/更新事務(wù)量較大時(shí)數(shù)據(jù)等待造成內(nèi)部進(jìn)程超時(shí)的問題,同時(shí)還優(yōu)化了查詢請(qǐng)求的告警信息,便于追蹤和定位問題。

輕松擴(kuò)展節(jié)點(diǎn):在 TiDB 5.3.0 中,TiDB HTAP 架構(gòu)可隨業(yè)務(wù)增長輕松擴(kuò)展到 200 節(jié)點(diǎn)甚至更大的集群規(guī)模,并且確保 OLTP 與 OLAP 之間原則上不產(chǎn)生資源沖突和相互性能影響。

增強(qiáng)運(yùn)維能力:完善了數(shù)據(jù)校驗(yàn),解決了節(jié)點(diǎn)重啟時(shí)內(nèi)部處理可能出現(xiàn)的問題;同時(shí)進(jìn)一步提升了 SQL 告警信息和增強(qiáng)了日志收集、檢索功能。

低延遲同步至 TiDB,助力企業(yè)業(yè)務(wù)持續(xù)增長

伴隨著業(yè)務(wù)持續(xù)增長,企業(yè)訂單系統(tǒng)的數(shù)據(jù)庫壓力也不斷增加。核心交易庫寫流量巨大,造成訂單提交時(shí)間變長,影響網(wǎng)站用戶體驗(yàn)。面對(duì)這一典型的業(yè)務(wù)場景,為了幫助提升企業(yè)縮短訂單提交時(shí)間,TiDB 支持作為下游只讀從庫提供業(yè)務(wù)查詢服務(wù),為核心交易系統(tǒng)減壓。

TiDB Data Migration (DM) 作為一款實(shí)時(shí)的數(shù)據(jù)同步工具,支持將數(shù)據(jù)從與 MySQL 協(xié)議兼容的數(shù)據(jù)庫同步到 TiDB,實(shí)現(xiàn)業(yè)務(wù)分流,減輕高峰期前端訂單寫入時(shí)的壓力。而交易場景高度的即時(shí)性,要求業(yè)務(wù)查詢延遲極低、數(shù)據(jù)實(shí)時(shí)性極高,這給 DM 的同步性能帶來了極大挑戰(zhàn)。

為了保證低延遲,數(shù)據(jù)遷移工具 DM 在 v5.3.0 實(shí)現(xiàn)了兩項(xiàng)優(yōu)化:

合并單行數(shù)據(jù)的多次變更,減少同步到下游的 SQL 數(shù)量,提高遷移效率,降低數(shù)據(jù)延遲,為網(wǎng)站用戶更快地提供業(yè)務(wù)查詢服務(wù);

批量的點(diǎn)查更新合并為單一的語句操作,減少遠(yuǎn)程過程調(diào)用請(qǐng)求的數(shù)量,同樣數(shù)量的 binlog 可以更快地同步完成,進(jìn)而降低延遲,為網(wǎng)站用戶更準(zhǔn)確地提供業(yè)務(wù)查詢服務(wù)。

極低的同步延遲保障了下游 TiDB 數(shù)據(jù)查詢實(shí)時(shí)性,企業(yè)在保持現(xiàn)有架構(gòu)的情況下,無需進(jìn)行大規(guī)模改造,就能快速引入 TiDB 以增強(qiáng)實(shí)時(shí)查詢分析能力,更好更快萃取數(shù)據(jù)價(jià)值。

經(jīng)場景實(shí)測,在 300K QPS 數(shù)據(jù)同步流量下,99.9% 時(shí)間內(nèi) DM 同步延遲降低至 1 秒以內(nèi),尤其適用于高負(fù)載業(yè)務(wù)壓力下 TiDB 作為只讀從庫的場景。

新增并行導(dǎo)入功能,提升全量數(shù)據(jù)遷移效率

目前 MySQL 分庫分表架構(gòu)日益普遍,很多企業(yè)的數(shù)據(jù)量已經(jīng)達(dá)到百 TB 級(jí)別。隨著企業(yè)數(shù)據(jù)量的增長,從集中式數(shù)據(jù)庫遷移到以 TiDB 為代表的分布式數(shù)據(jù)庫已經(jīng)成為必然,然而存量系統(tǒng)里面的 100 TB 數(shù)據(jù)沒有方便高效的工具進(jìn)行遷移。

為解決此問題,TiDB 5.3.0 發(fā)布了 TiDB Lightning 并行導(dǎo)入功能,提供了高效的 TiDB 集群初始化能力。用戶可以同時(shí)啟動(dòng)多個(gè) TiDB Lightning 實(shí)例,并行地將單表或者多表數(shù)據(jù)遷移到 TiDB,速度可以橫向擴(kuò)展,極大地提高了數(shù)據(jù)遷移效率。

并行導(dǎo)入示意圖如下。用戶可以使用多個(gè) TiDB Lightning 實(shí)例導(dǎo)入 MySQL 的分表到下游的 TiDB 集群。

TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實(shí)現(xiàn) HTAP 性能和穩(wěn)定性的新飛躍

并行導(dǎo)入功能支持多種數(shù)據(jù)源,包括:CSV/SQL 格式的文本數(shù)據(jù)、MySQL 分表導(dǎo)出數(shù)據(jù) 。支持的最大單表規(guī)模在 20 TB ~ 30 TB 之間,導(dǎo)入單表數(shù)據(jù)建議使用 1 個(gè) ~ 8 個(gè) TiDB Lightning 實(shí)例,每個(gè)實(shí)例最佳規(guī)模保持在 2 TB~ 5 TB 。對(duì)于多表總規(guī)模和使用 Lightning 的個(gè)數(shù)沒有上限要求。

經(jīng)測試,使用 10 臺(tái) TiDB Lightning,20 TB 規(guī)模的 MySQL 數(shù)據(jù)可以在 8 小時(shí)內(nèi)導(dǎo)入到 TiDB,單臺(tái) TiDB Lightning 可以支持 250 GB/h 的導(dǎo)入速度,整體效率提升了 8 倍。

引入臨時(shí)表,一條 SQL 語句簡化業(yè)務(wù)邏輯并提升性能

業(yè)務(wù)臨時(shí)中間數(shù)據(jù)存儲(chǔ)不易

在數(shù)據(jù)量大的場景下,用戶業(yè)務(wù)常常需要處理龐大的中間數(shù)據(jù)。如果業(yè)務(wù)需要反復(fù)使用數(shù)據(jù)中的一部分子集,用戶通常會(huì)臨時(shí)保存這部分?jǐn)?shù)據(jù),用完后釋放。因此,DBA 不得不頻繁地建表和刪表,可能還需要自行設(shè)計(jì)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),把中間數(shù)據(jù)存儲(chǔ)至業(yè)務(wù)模塊中。這不僅增加了業(yè)務(wù)復(fù)雜度,也造成了龐大的內(nèi)存開銷,而且如果管理不善,還存在內(nèi)存泄漏導(dǎo)致系統(tǒng)崩潰的風(fēng)險(xiǎn)。

TiDB 臨時(shí)表幫助用戶簡化業(yè)務(wù)邏輯并提升性能

為幫助用戶解決以上痛點(diǎn),TiDB 在 5.3.0 版本中引入了臨時(shí)表功能。該功能針對(duì)業(yè)務(wù)中間計(jì)算結(jié)果的臨時(shí)存儲(chǔ)問題,讓用戶免于頻繁地建表和刪表等操作。用戶可將業(yè)務(wù)上的中間計(jì)算數(shù)據(jù)存入臨時(shí)表,用完后自動(dòng)清理回收,避免業(yè)務(wù)過于復(fù)雜,減少表管理開銷,并提升性能。

TiDB 臨時(shí)表主要應(yīng)用于以下業(yè)務(wù)場景:

緩存業(yè)務(wù)的中間臨時(shí)數(shù)據(jù),計(jì)算完成后將數(shù)據(jù)轉(zhuǎn)儲(chǔ)至常規(guī)表,臨時(shí)表會(huì)自動(dòng)釋放。

短期內(nèi)對(duì)同一數(shù)據(jù)進(jìn)行多次 DML 操作。例如在電商購物車應(yīng)用中,添加、修改、刪除商品及完成結(jié)算,并移除購物車信息。

快速批量導(dǎo)入中間臨時(shí)數(shù)據(jù),提升導(dǎo)入臨時(shí)數(shù)據(jù)的性能。

批量更新數(shù)據(jù)。將數(shù)據(jù)批量導(dǎo)入到數(shù)據(jù)庫的臨時(shí)表,修改完成后再導(dǎo)出到文件。

一條 SQL 語句輕松創(chuàng)建臨時(shí)表

可通過 CREATE [GLOBAL] TEMPORARY TABLE 語句創(chuàng)建臨時(shí)表。臨時(shí)表中的數(shù)據(jù)均保存在內(nèi)存中,用戶可通過 tidb_tmp_table_max_size 變量限制臨時(shí)表的內(nèi)存大小。

TiDB 提供的臨時(shí)表分為 Global 和 Local 兩類,無論使用哪種臨時(shí)表,都能有效幫助用戶簡化業(yè)務(wù)邏輯并提升性能:

Global 臨時(shí)表:

對(duì)集群內(nèi)所有 Session 可見,表結(jié)構(gòu)持久化。

提供事務(wù)級(jí)別的數(shù)據(jù)隔離,數(shù)據(jù)只在事務(wù)內(nèi)有效,事務(wù)結(jié)束后自動(dòng)刪除數(shù)據(jù)。

Local 臨時(shí)表:

只對(duì)當(dāng)前 Session 可見,表結(jié)構(gòu)不持久化。

支持重名,用戶無需為業(yè)務(wù)設(shè)計(jì)復(fù)雜的表命名規(guī)則。

提供會(huì)話級(jí)別的數(shù)據(jù)隔離,降低業(yè)務(wù)設(shè)計(jì)復(fù)雜度,會(huì)話結(jié)束后刪除臨時(shí)表。

結(jié)語

本次發(fā)布的 5.3.0 版本進(jìn)一步完善了系統(tǒng)的可觀測性、提升了分布式數(shù)據(jù)庫可擴(kuò)展性、保證了數(shù)據(jù)的低延遲同步、大幅提升了全量數(shù)據(jù)遷移效率、提升了實(shí)時(shí)分析的穩(wěn)定性,是 TiDB 邁向成熟企業(yè)級(jí) HTAP 平臺(tái)的一個(gè)重要里程碑。

PingCAP 首席架構(gòu)師唐劉表示:TiDB HTAP 的使命不僅僅局限于對(duì)傳統(tǒng)數(shù)據(jù)庫的升級(jí)或者是交易和分析處理性能的提升,本質(zhì)上 TiDB HTAP 是一個(gè)開放的生態(tài)體系,在企業(yè)中承擔(dān)著支持?jǐn)?shù)據(jù)服務(wù)消費(fèi)化和構(gòu)建統(tǒng)一實(shí)時(shí)數(shù)據(jù)服務(wù)平臺(tái)的角色,為用戶帶來業(yè)務(wù)與架構(gòu)的創(chuàng)新與提升。

TiDB 的每一次發(fā)版和進(jìn)步都離不開每一位用戶的反饋、每一位開發(fā)者的 PR 合并、每一位質(zhì)量保證人員的測試。感謝所有人的貢獻(xiàn),TiDB 在后續(xù)版本中會(huì)不斷加強(qiáng)大規(guī)模場景下的穩(wěn)定性和易用性,不忘初心,砥礪前行,成為一款讓人愛不釋手的基礎(chǔ)軟件,給用戶帶來更好的使用體驗(yàn)。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )