內核關鍵特性持續(xù)增強

支持在線 DDL 是 TiDB 的核心優(yōu)勢之一,在過往一年中,TiDB 加入了對并行 DDL 的支持,使得以往在 SaaS 等多租戶場景因 DDL 串行執(zhí)行互相阻塞導致的 DDL 語句間并發(fā)執(zhí)行效率低的問題得以解決,通過引入 Metadata Lock 基本消除了 DDL 干擾 DML 的情況。v6.5 版本通過轉變全量數(shù)據(jù)的索引創(chuàng)建模式、數(shù)據(jù)傳輸和并行導入三方面的改造,實現(xiàn)創(chuàng)建索引的性能的數(shù)量級提升。添加索引加速適用于單條 SQL 語句串行添加索引的場景,在多條 SQL 并行添加索引時僅對其中一條添加索引的 SQL 語句生效。經(jīng)過 Sysbench 基準測試的驗證,TiDB v6.5 在線 DDL 性能約是 TiDB v6.1 版本的 10 倍。

圖:TiDB v6.5 在線 DDL 性能較 v6.1 提升約 10 倍

JSON 格式為應用設計提供了更靈活的建模方式,目前越來越多的應用采用 JSON 格式進行數(shù)據(jù)交換和數(shù)據(jù)存儲。 特別是 Web3,游戲等行業(yè),使用 JSON 數(shù)據(jù)類型支持敏捷多變的業(yè)務。此類業(yè)務中存在大量實時數(shù)據(jù)分析需求,但是由于 JSON 數(shù)據(jù)類型比較復雜,對于 JSON 類型數(shù)據(jù)的分析具有很大的挑戰(zhàn)性。TiDB 陸續(xù)完善了 JSON 功能函數(shù)并對 MySQL 5.7 完整兼容,引入了針對 JSON 的表達式索引支持,更多的生態(tài)工具兼容。新版本支持將 JSON 函數(shù) “->”、”->>”、”JSON_EXTRACT()” 下推至 TiFlash,可以提高 JSON 類型數(shù)據(jù)的分析效率,拓展 TiDB 實時分析的應用場景。

自 v6.5 版本起,TiDB 全局內存控制能夠跟蹤到 TiDB 中主要的內存消耗。當全局內存消耗達到 TiDB Server 所定義的內存閾值時,TiDB 會嘗試 GC 或取消 SQL 操作等方法限制內存使用,保證 TiDB 的穩(wěn)定性并提升內存的使用效率。

在部分交易系統(tǒng)尤其是銀行業(yè)務中,應用會在悲觀事務中利用 select for update 先鎖定一條記錄,從而達到對數(shù)據(jù)一致性的保護,減少事務中后續(xù)操作失敗的可能。原先在 TiDB 中,對一行記錄反復的 select for update,可能會造成這條記錄的查詢性能下降。 v6.5 版本對此項機制進行了優(yōu)化, 通過記錄連續(xù)的鎖標記,降低了累積的悲觀鎖對查詢性能的影響,相同場景下 QPS 可大幅提升 10 倍以上。

易用性進一步提升

線上購物場景,用戶經(jīng)常設置各種過濾條件,從大量商品中篩選到自己中意的商品。例如挑選一個手機殼,用戶可能會查找:“黑色 AND 鋁合金材質” OR “透明 AND 硅膠材質”。為了能夠快速響應查詢,保證用戶體驗,數(shù)據(jù)庫表通常需要建很多索引。TiDB 的索引合并 (Index Merge)功能就是應對此類問題的理想方案。在 v6.5 之前 TiDB 僅支持 OR 條件組合情況下的索引合并,在新版本中用戶可以任意組合 AND 與 OR 的過濾條件,實現(xiàn)與復合索引相近的性能,大大減少了索引對維護表健康的壓力,也保障了極佳的查詢響應時間。

線上環(huán)境的數(shù)據(jù)誤操作容易導致生產事故,TiDB v6.5 引入的 FLASHBACK CLUSTER TO TIMESTAMP 支持在 Garbage Collection (GC) life time 內快速回退整個集群到指定的時間點,適用于快速撤銷 DML 誤操作。例如,在誤執(zhí)行了沒有 WHERE 子句的 DELETE 后,使用 FLASHBACK CLUSTER TO TIMESTAMP 能夠在幾分鐘內將集群數(shù)據(jù)恢復到指定的時間點。尤其特別的是,該功能無需備份支持,單條 SQL 語句即可實現(xiàn)集群分鐘級別閃回,高效便捷;該功能還支持時間線上的多次回退,最大程度降低數(shù)據(jù)風險。

在大批量的數(shù)據(jù)處理場景中,單一大事務 SQL 處理可能對集群穩(wěn)定性和性能造成影響。新版本 TiDB 提供了將大事務自動拆分的能力,非事務 DML 語句將一個 DML 語句拆成多個 SQL 語句在內部執(zhí)行,拆分后的語句將犧牲事務原子性和隔離性,但是可以提升批量操作 SQL 的成功率,以及減少因內存過大導致的 OOM 問題。

v6.5 版本中,TiFlash 通過支持 INSERT SELECT 語句,可將 TiFlash 計算結果保存到數(shù)據(jù)表中(即物化了 TiFlash 的查詢結果),方便重用分析計算的結果,節(jié)省系統(tǒng)資源并提高響應速度。如果應用開發(fā)者能充分利用物化結果,有效重用,那么 TiDB 系統(tǒng)的整體負載可以減少到原先重復執(zhí)行查詢的幾分之一甚至更多,與此同時對于物化結果表的查詢則可以控制到毫秒級,并支持比單純依賴 TiFlash 的情況高 3-4 個數(shù)量級的并發(fā)請求,足以應對大規(guī)模在線業(yè)務。

此外,v6.5 版本加入了高性能的全局單調遞增主鍵的支持,該模式下 TiDB 將采取中心化的主鍵分配以確保單調遞增,即使跨 TiDB 實例訪問,ID 也不會出現(xiàn)回退,且針對其的寫入也可輕松達到數(shù)萬的 TPS。新版本 TiDB 新增 Time to Live (TTL) 能力,用戶可以設定行級別的生命周期控制策略。通過為表設置 TTL 屬性,TiDB 可以周期性地自動檢查并清理表中的過期數(shù)據(jù)。

多樣化的災備能力

TiDB PITR(Point-in-Time Recovery)是結合了 BR 和變更捕獲(Change Data Capture)兩種能力的災備特性,使得數(shù)據(jù)庫可以更靈活地恢復到任意時間點。以往 BR 的靜態(tài)災備只能將數(shù)據(jù)恢復到備份的時間點,如果要提供針對更新和更多時間點的恢復,則需要提高備份頻率,會加重備份對在線業(yè)務的負擔,也需要更多的存儲成本。使用 PITR 用戶無需不斷進行全量備份,而是可經(jīng)由一個全量備份結合增量共同完成針對任意時間點的數(shù)據(jù)恢復。v6.5 新版本減少了 PITR 備份文件大小和數(shù)量,加強了穩(wěn)定性,大幅提升了性能。在日志恢復階段,單臺 TiKV 的恢復速度可以達到 30GiB/h,提升了 50%,并且恢復速度可擴展,有效地降低容災場景的 RTO 指標。

圖:TiDB PITR 災備示意圖

與此同時,在 v6.5 版本中 TiCDC 的吞吐獲得了數(shù)倍的提升。當下游為 Kafka 集群時,針對大單表場景的吞吐量得到了極大的提升,單個 TiCDC 節(jié)點可以支持 35k row/s QPS,吞吐量可以達到 50MB/s,并將延遲控制在 2 秒左右,而內存使用量只有之前版本的 50% 左右。 在跨區(qū)域主備集群容災場景中,TiCDC 單個節(jié)點的吞吐量可以達到 30MB/s,且延遲可以穩(wěn)定在 2 秒左右。新版本的 TiCDC 支持在向下游寫入時提供特殊的時間戳,下游集群可以自動使用該時間戳進行一致性讀取而無需擔心讀到的事務不完整,使得下游集群在需要嚴苛事務保證的場景下也可以良好地承擔讀流量分流的職責。

TiDB Data Migration (DM) 在新版本中正式發(fā)布了在數(shù)據(jù)遷移過程中的增量數(shù)據(jù)持續(xù)校驗功能,該特性只對新增或變更的數(shù)據(jù)進行校驗,而不是對整個數(shù)據(jù)集進行校驗,在確保數(shù)據(jù)遷移過程的準確性和可靠性的同時,大大減少數(shù)據(jù)校驗的時間和資源消耗。

深耕應用開發(fā)者生態(tài)

提升 DBA 和開發(fā)者的使用體驗一直是 TiDB 努力的重要方向。TiDB v6.5 強化了應用開發(fā)所需的生態(tài)環(huán)境構建,例如 TiDB 通過增加對 Savepoint,User Level Lock,Multiple Schema Change 等功能的支持,完善了針對常見應用框架 django,prisma 等的支持。與此同時,PingCAP 也和更多的上下游生態(tài)伙伴建立了廣泛的合作關系,包括 Vercel,Hashicorp,Retool 等。

在 v6.5 版本中,TiCDC 新增向對象存儲(Object Storage)寫入的支持。對象存儲是一種面向云的存儲服務,具有高可擴展性、高可用性、低成本等優(yōu)勢。使用 TiCDC 將數(shù)據(jù)同步到對象存儲,可以幫助用戶實現(xiàn)數(shù)據(jù)的長期存儲、數(shù)據(jù)的跨區(qū)域復制等。這也使得 TiDB 在云環(huán)境下能直接打通對接數(shù)倉和數(shù)據(jù)湖的通路。更好的生態(tài)支持將使得開發(fā)者在使用 TiDB 構建應用時,擁有更多選擇,也更加便利。

PingCAP 研發(fā)副總裁唐劉表示:此次發(fā)布的 TiDB v6.5 是 TiDB v6 系列的第二個長期支持版本,在成熟的 HTAP 平臺上進一步提升了企業(yè)級關鍵能力,用戶可放心地在關鍵業(yè)務場景中使用。TiDB 將持續(xù)聚焦于產品內核,不斷優(yōu)化企業(yè)級特性,為產品迭代打好堅實的基礎。在此基礎之上,TiDB 會在 Serverless、 DB 微服務化、智能化等方向上不斷拓展產品的邊界和能力,融入更多的數(shù)據(jù)和技術生態(tài),為用戶提供更多價值。

更多 TiDB 6.5 版本新功能,請查閱 TiDB 官網(wǎng) Release Notes:https://docs.pingcap.com/zh/tidb/stable/release-6.5.0

立即開啟 TiDB 體驗之旅:https://pingcap.com/zh/product/

關于 PingCAP:

PingCAP 是業(yè)界領先的企業(yè)級開源分布式數(shù)據(jù)庫企業(yè),提供包括開源分布式數(shù)據(jù)庫產品、解決方案與咨詢、技術支持與培訓認證服務,致力于為全球行業(yè)用戶提供穩(wěn)定高效、安全可靠、開放兼容的新型數(shù)據(jù)服務平臺,解放企業(yè)生產力,加速企業(yè)數(shù)字化轉型升級。

分享到

xiesc

相關推薦