TiDB v6.2 于 8 月 23 日發(fā)布。在全新的版本中,TiDB 提供了諸多方面的提升,它們主要集中于:可觀測性,性能,穩(wěn)定性,數(shù)據(jù)生態(tài)加強以及 MySQL 兼容幾個領(lǐng)域。
可觀測性
在新版本中,TiDB Dashboard 支持了可視化執(zhí)行計劃。以往 TiDB 用只能借助觀察文字輸出的執(zhí)行計劃排查問題,這對于簡單的交易類 SQL 而言問題并不大,但分析型 SQL 很可能會產(chǎn)生龐大的執(zhí)行計劃信息,造成用戶難以觀察分析。在新版本中,TiDB Dashboard 在 Statements 和 Slow Query 中提供可視化執(zhí)行計劃和基礎(chǔ)問題診斷的能力。這是一種全新的查詢計劃的展示方式,目標(biāo)是通過圖形化的手段展示 Query 查詢計劃的每個步驟,從而使得用戶能夠更加直觀方便地了解查詢執(zhí)行計劃的細(xì)節(jié)。對于復(fù)雜的大型查詢語句,可視化的展示方式對于深入理解其執(zhí)行過程大有裨益。
在這個版本中,TiDB Dashboard 也新增的 Monitoring 頁面,展示了在業(yè)務(wù)性能調(diào)優(yōu)中所需的核心指標(biāo),使得用戶大部分的日常運維監(jiān)控需求可以在這里完成,無需在 Grafana 和 Dashboard 間跳轉(zhuǎn)。
除此之外,新版本中 TiDB 鎖視圖支持樂觀事務(wù)被阻塞的信息。大量鎖沖突往往會造成嚴(yán)重的性能問題,而鎖沖突定位是這類性能問題排查的必要手段之一。TiDB v6.2.0 之前版本支持通過系統(tǒng)視圖 INFORMATION_SCHEMA.DATA_LOCK_WAITS 查看鎖沖突關(guān)系,但是不支持樂觀事務(wù)被悲觀鎖阻塞的情況。TiDB v6.2.0 擴展了 DATA_LOCK_WAITS 視圖,提供樂觀事務(wù)被悲觀鎖阻塞情況下的沖突關(guān)系,可以幫助用戶快速定位鎖沖突,同時為業(yè)務(wù)改進(jìn)提供依據(jù),從而減少這類鎖沖突的發(fā)生頻率,提升系統(tǒng)整體性能。
性能
在新版本中 TiDB HTAP 性能有進(jìn)一步提升。
首先,TiFlash 在 6.2.0 中引入了新的存儲格式 PageStore V3。該格式大幅減輕了在高并發(fā)、高負(fù)載場景下 GC 造成 CPU 占用高的問題,可以有效減少后臺任務(wù) IO 流量,提升高并發(fā)、高負(fù)載下的穩(wěn)定性。6.2.0 版本默認(rèn)以新版本存儲格式保存數(shù)據(jù)。
在計算引擎方面,TiFlash 通過實現(xiàn)細(xì)粒度數(shù)據(jù)交換(shuffle)使窗口函數(shù) (Window function) 可以利用多線程并行計算,成倍降低查詢響應(yīng)時間,使其在典型場景下可提速 4~5 倍。而在去重計算 COUNT(DISCINT) 中,分析引擎通過降低數(shù)據(jù)傾斜優(yōu)化了計算效率。
除了分析場景,新版本中引入新的 DDL 并行執(zhí)行框架,在不同表對象上的 DDL 可以并發(fā)執(zhí)行,解決了之前不同表之間 DDL 相互阻塞的問題。同時在不同表對象的追加索引、列類型變更等場景下支持并行執(zhí)行,大幅提升執(zhí)行效率。
穩(wěn)定性
除了性能加強,V6.2 也包含了重要的穩(wěn)定性加固。
TiKV 在新版本中支持自適應(yīng)調(diào)整 CPU 使用率。數(shù)據(jù)庫通常會使用后臺進(jìn)程來執(zhí)行一些內(nèi)部操作,通過采集各種統(tǒng)計信息,幫助用戶定位性能問題,生成更優(yōu)的執(zhí)行計劃,從而提升數(shù)據(jù)庫的穩(wěn)定性和性能。然而如何平衡后臺操作和前臺操作的資源開銷,在不影響用戶日常數(shù)據(jù)庫使用的基礎(chǔ)上如何更高效地采集信息,一直是數(shù)據(jù)庫領(lǐng)域最為頭疼的問題之一。從 v6.2.0 開始,TiDB 支持通過 TiKV 配置文件設(shè)置后臺請求的 CPU 使用率, 進(jìn)而限制自動統(tǒng)計信息收集等后臺操作在 TiKV 的 CPU 使用比例,避免極端情況下后臺操作搶占對用戶操作的資源,確保數(shù)據(jù)庫穩(wěn)定高效運行。同時 TiDB 還支持 CPU 使用率自動調(diào)節(jié)的功能, 這時 TiKV 會根據(jù)實例的 CPU 占用情況, 自適應(yīng)地對后臺請求占用的 CPU 資源進(jìn)行動態(tài)調(diào)整。該功能默認(rèn)關(guān)閉。
而 TiFlash 則加固了在處理大量數(shù)據(jù)的場景。在新版本中,通過減少分布式事務(wù)處理的內(nèi)存放大(memory amplification),TiFlash 大幅降低了內(nèi)存消耗,相較于 v6.1 之前版本最好的情況下內(nèi)存使用峰值可降低 50% 以上,從而減少了大規(guī)模分析場景下不同任務(wù)內(nèi)存資源沖突問題出現(xiàn)的可能性。
數(shù)據(jù)生態(tài)培育
在新版本中,最重要的數(shù)據(jù)生態(tài)功能是支持 Point-in-Time Recovery (PiTR)。PiTR 指的是允許用戶在新集群上恢復(fù)備份集群的歷史任意時刻點的快照。從技術(shù)而言,PiTR 是基于變更日志和快照數(shù)據(jù)共同進(jìn)行的數(shù)據(jù)備份和恢復(fù)。該功能可以滿足以下的用戶需求:
· 降低備份恢復(fù)在災(zāi)備場景下的 RPO,如實現(xiàn)十幾分鐘的 RPO;
· 用于處理業(yè)務(wù)數(shù)據(jù)寫錯的案例,如回滾業(yè)務(wù)數(shù)據(jù)到出錯事件前;
· 業(yè)務(wù)歷史數(shù)據(jù)審計,滿足行業(yè)合規(guī)的需求。
針對數(shù)據(jù)導(dǎo)入場景,TiDB Lightning 優(yōu)化并減小了導(dǎo)入對集群帶來的性能影響。TiDB Lightning 原有的物理導(dǎo)入模式 (backend='local') 對目標(biāo)集群影響較大,例如導(dǎo)入過程將停止 PD 調(diào)度等,因此僅適用于目標(biāo)集群初次導(dǎo)入數(shù)據(jù)。新版本中,TiDB Lightning 在現(xiàn)有基礎(chǔ)上做了改進(jìn),導(dǎo)入時影響范圍由集群級別降低到表級別,即非導(dǎo)入的表仍可進(jìn)行讀寫操作。
除此之外,BR 現(xiàn)在已支持恢復(fù)用戶和權(quán)限數(shù)據(jù),這使得備份恢復(fù)體驗變得更平滑,用戶不再需要在集群恢復(fù)之后單獨處理用戶和權(quán)限信息。
最后,TiCDC 加入了 DDL 過濾機制。自 v6.2 起,TiCDC 支持過濾指定類型的 DDL 事件,支持基于 SQL 表達(dá)式過濾 DML 事件,從而適應(yīng)更多的數(shù)據(jù)同步場景。例如在一些特殊的場景下,用戶可能希望對 TiDB 增量數(shù)據(jù)變更日志進(jìn)行一定規(guī)則的過濾,例如過濾 Drop Table 等高風(fēng)險 DDL。
MySQL 兼容
在 MySQL 兼容的道路上,TiDB 在 v6.2 加入了 SAVEPOINT 機制以及單 ALTER TABLE 語句增刪改多個列或索引。
先說說 SAVEPOINT。事務(wù)是數(shù)據(jù)庫保證 ACID 特性的一系列連續(xù)操作的邏輯集合。在一些復(fù)雜業(yè)務(wù)場景下,你可能需要管理一個事務(wù)的大量操作,有時候需要在事務(wù)內(nèi)實現(xiàn)部分操作的回退能力。SAVEPOINT 就是針對事務(wù)內(nèi)部實現(xiàn)的可命名保存點機制,通過這個機制,你可以靈活地控制事務(wù)內(nèi)的回退節(jié)點,從而實現(xiàn)更復(fù)雜的事務(wù)管理能力,實現(xiàn)更為多樣的業(yè)務(wù)設(shè)計。
然后是 ALTER TABLE 操作多列和多索引。之前版本中,TiDB 僅支持單一 DDL 變更,導(dǎo)致用戶在遷移異構(gòu)數(shù)據(jù)庫時經(jīng)常會遇見 DDL 操作不兼容的情況,需要耗費額外的精力將復(fù)雜的 DDL 修改成 TiDB 支持的多個簡單 DDL。同時還有一些用戶依賴 ORM 框架,實現(xiàn) SQL 組裝,最終出現(xiàn)了 SQL 不兼容等問題。TiDB 從 v6.2.0 開始,支持使用 ALTER TABLE 語句修改一個表的多個模式對象,方便了用戶 SQL 實現(xiàn),也提升了產(chǎn)品易用性。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )