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

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

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

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

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

5.3.0 功能亮點與用戶價值

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TiDB 5.3 發(fā)版 —— 跨越可觀測性鴻溝,實現(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 個 ~ 8 個 TiDB Lightning 實例,每個實例最佳規(guī)模保持在 2 TB~ 5 TB 。對于多表總規(guī)模和使用 Lightning 的個數(shù)沒有上限要求。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Global 臨時表:

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

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

Local 臨時表:

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

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

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

結(jié)語

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

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

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

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