“當(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)了大幅提升,為所有用戶帶來重磅福利。
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)在皆可回溯。
當(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)境如下:
本次優(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 集群。
并行導(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)鏈接。 )