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