首頁 > 技術(shù) > 正文

TiDB 7.1 LTS 發(fā)版:為關(guān)鍵業(yè)務(wù)提供業(yè)務(wù)穩(wěn)定性和多租戶場景支持 天天熱消息

2023-06-08 16:50:30來源:中關(guān)村在線  

近日,企業(yè)級開源分布式數(shù)據(jù)庫廠商 PingCAP 正式發(fā)布 TiDB 7.1 版本,這也是 2023 年度發(fā)布的首個(gè) LTS(Long Term Support) 版本,匯集了來自 20+ 個(gè)真實(shí)場景帶來的功能增強(qiáng),累計(jì)優(yōu)化和修復(fù) 140+ 功能,旨在提升關(guān)鍵業(yè)務(wù)的穩(wěn)定性和性能,幫助開發(fā)人員和數(shù)據(jù)庫管理員提高生產(chǎn)力并進(jìn)一步降低總體擁有成本(TCO)。用戶可在生產(chǎn)環(huán)境中使用 TiDB 7.1。


(資料圖)

TiDB 半年版本回顧

TiDB 7.1 LTS 距離上一個(gè) LTS 版本 6.5 已經(jīng)過去了整半年,在這期間,PingCAP 對產(chǎn)品的關(guān)鍵能力做了大量的增強(qiáng)和優(yōu)化,其中最重要的特性有:

● TiDB 7.0 提供了基于資源組的資源管控(Resource Control) :這使得 TiDB 在針對多租戶場景有了很好的應(yīng)對。事實(shí)上,經(jīng)常有用戶希望借助 TiDB 的可伸縮特性將多套業(yè)務(wù)系統(tǒng)歸一到一個(gè)集群中,從而使得集群管理、資源利用都能得到有效的改進(jìn)。資源管控特性提供了對多租戶的支持,并解決了不同租戶間資源爭搶的問題。在新版本中,用戶可以很方便地借助這個(gè)功能完善數(shù)據(jù)庫整合的使用場景。

● Multi-RocksDB 特性 :借助將單一 TiKV 實(shí)例中的 RocksDB 拆成多份,TiKV 的寫吞吐提升近三倍;此外,在新架構(gòu)中數(shù)據(jù)分片(Region)大小將變得更大,由此減小維護(hù)分片所帶來的開銷,減少單位存儲(chǔ)所需的固定 CPU 消耗,更節(jié)省成本。這使得大寫入吞吐,或者需要大量存放溫?cái)?shù)據(jù)的 Data Serving 場景下,TiDB 的表現(xiàn)得到了本質(zhì)的提升。

對于這些重要的重量級特性,在新版本中也將持續(xù)得到打磨和加強(qiáng)。這半年中,TiDB 在一些關(guān)鍵場景的性能也得到長足提升:

● 數(shù)據(jù)導(dǎo)入 Lightning 性能提升近 30% 

● 真實(shí)業(yè)務(wù)測試下,Analyze Table 性能提升 42%+ ;

● 標(biāo)準(zhǔn)測試 TPC-H 和真實(shí)業(yè)務(wù)測試下,TiDB 分析能力分別提升 15% 和 25% ;

● TiCDC 針對大型單表復(fù)制性能提升可達(dá) 90%+ 。

TiDB 7.1 功能特性

TiDB 7.1 是PingCAP 計(jì)劃在 2023 年發(fā)布的兩個(gè)長期可支持(LTS)版本中的第一個(gè),它提供了一個(gè)面向未來的數(shù)據(jù)庫,可以為各種關(guān)鍵業(yè)務(wù)應(yīng)用程序提供動(dòng)力。TiDB 7.1 將為用戶帶來以下特性:

● 更穩(wěn)定地支持關(guān)鍵業(yè)務(wù)負(fù)載 ,為 DBA 提供多工作負(fù)載穩(wěn)定性控制,并顯著改善尾部延遲;

● 以更少的資源提供更佳的性能 ,通過架構(gòu)增強(qiáng)實(shí)現(xiàn)更高的吞吐以及更快的在線 DDL。

此外,TiDB 7.1 企業(yè)版增強(qiáng)了數(shù)據(jù)庫審計(jì)功能,通過更細(xì)粒度的事件過濾控制、更友好的過濾條件設(shè)置方式、新增的 JSON 文件輸出格式以及審計(jì)日志的生命周期管理,大幅提升系統(tǒng)的審計(jì)能力。

2.1 更穩(wěn)定地支持關(guān)鍵業(yè)務(wù)負(fù)載

2.1.1 通過資源組改進(jìn)資源管控的用戶體驗(yàn),提供更好的隔離性

PingCAP 在 TiDB 7.0 中增加了通過資源組進(jìn)行資源管控的功能,為 TiDB database consolidation (數(shù)據(jù)庫整合)方案奠定了基礎(chǔ),具有里程碑的意義。多個(gè)業(yè)務(wù)可共享同一個(gè) TiDB 集群,DBA 可為不同的工作負(fù)載設(shè)置資源配額和優(yōu)先級,例如為關(guān)鍵業(yè)務(wù)分配更高的優(yōu)先級,確保其能夠優(yōu)先獲得資源,避免受到其他工作負(fù)載的干擾。

在 TiDB 7.1 中,資源管控特性正式 GA 了,并加入了兩個(gè)特性增強(qiáng):

● 降低了在重寫入密集型工作負(fù)載中出現(xiàn)的尾延遲:資源組通過資源配額和優(yōu)先級控制工作負(fù)載。優(yōu)先級由存儲(chǔ)級別控制。當(dāng)工作負(fù)載寫入繁重時(shí),基于優(yōu)先級重新調(diào)度機(jī)制有時(shí)會(huì)造成更高的尾延遲(Tail Latency)。在 7.1 版本中,尾延遲被修正到預(yù)期水準(zhǔn)。

● 增加原生負(fù)載校準(zhǔn)工具,幫助用戶設(shè)置更準(zhǔn)確的資源資源分配:資源分配的基礎(chǔ)是用戶對負(fù)載的資源使用量有所了解。新增的校準(zhǔn)工具將很好的幫助您評估相關(guān)信息,以合理配置資源組。最快的方法是從 SQL 接口運(yùn)行校準(zhǔn)命令來估計(jì)基準(zhǔn)測試(如 TPC-C 和 sysbench)的資源使用情況。

2.1.2 多個(gè)熱點(diǎn)場景下性能和穩(wěn)定性提升

對 TiDB 的底層行存儲(chǔ) TiKV 有三個(gè)關(guān)鍵增強(qiáng),以降低延遲提升穩(wěn)定性(通過 p99 延遲衡量)。新版本引入了三項(xiàng)優(yōu)化,分別針對三個(gè)級別熱點(diǎn)進(jìn)行處理:Key 級別、分片(Region)級別和節(jié)點(diǎn)級別:

● Key 級熱點(diǎn):鎖沖突優(yōu)化

● Region 級熱點(diǎn):TiKV 子任務(wù)的批處理化

● 節(jié)點(diǎn)級熱點(diǎn):引入了基于負(fù)載的副本讀取

鎖沖突優(yōu)化(GA)

TiDB 引入了處理 Key 級熱點(diǎn)的優(yōu)化。在遇到許多單點(diǎn)悲觀鎖沖突的負(fù)載中,喚醒等待請求的算法在新版本中將表現(xiàn)得更穩(wěn)定,最大限度地減少了重試的資源浪費(fèi),從而節(jié)省了整個(gè)集群的資源并降低了尾延遲。測試表明,當(dāng)啟用鎖沖突優(yōu)化時(shí),如果吞吐量相對較小,即使在沖突最嚴(yán)重的工作負(fù)載中,新版本的尾延遲也將降低 40-60%。

批處理 TiKV 子任務(wù)(GA)

選擇性較差的查詢可能會(huì)導(dǎo)致需要讀取許多數(shù)據(jù)。在 TiDB 的分布式存算分離架構(gòu)中,這樣的查詢可能會(huì)帶來數(shù)萬或數(shù)十萬個(gè) RPC 請求用于獲取數(shù)據(jù),如果使用索引讀取則將更進(jìn)一步加重這一負(fù)擔(dān)。

TiDB 服務(wù)器作為 TiKV 客戶端,現(xiàn)在可以識別針對同一分片的批處理任務(wù),并將這些批量發(fā)送到對應(yīng)的存儲(chǔ)節(jié)點(diǎn)。這大大減少了網(wǎng)絡(luò)的 RPC 開銷,使得這些查詢更穩(wěn)定。這個(gè)增強(qiáng)可以將相應(yīng)場景中的延遲減少多達(dá) 50%。

基于負(fù)載的副本讀?。℅A)

這個(gè)特性用于優(yōu)化節(jié)點(diǎn)級讀熱點(diǎn)。當(dāng)大批量查詢以不均勻的方式發(fā)起讀取,可能會(huì)出現(xiàn)節(jié)點(diǎn)熱點(diǎn)。注入 Index Lookup JOIN 這類常見的事情都可能會(huì)導(dǎo)致這種情況。一旦發(fā)生,讀取請求會(huì)排隊(duì),當(dāng)隊(duì)列塞滿時(shí),一些請求可能會(huì)等待相當(dāng)長時(shí)間。PingCAP 希望通過更均勻地分配工作來減少延遲。

新版本中,TiDB 引入了基于負(fù)載的副本讀取來實(shí)現(xiàn)這一點(diǎn)。它為隊(duì)列提供了一個(gè)可配置的持續(xù)時(shí)間閾值,當(dāng)超過該閾值時(shí),它會(huì)告訴 TiDB 開始優(yōu)先考慮副本讀取。在讀熱點(diǎn)的情況下,與不打散讀熱點(diǎn)相比,該功能可提高讀取吞吐量 70%~200%。

有關(guān)此優(yōu)化的更多信息,請參閱文檔 ( https://docs.pingcap.com/tidb/dev/troubleshoot-hot-spot-issues#scatter-read-hotspots )。

2.2 更少的資源,更佳的性能

TiDB 7.1 提升了 TiDB 讀、寫以及管理操作的性能,以提供更好的用戶體驗(yàn)。新版本中,TiDB 增加了多值索引以提供對 JSON 的查詢效率。此外,在寫入吞吐、分析查詢速度和后臺(tái)任務(wù)效率方面也進(jìn)行了大量的改進(jìn)和優(yōu)化。

2.2.1 多值索引(GA)以增加速度和靈活性

多值索引也稱為“JSON 索引”,這種新型輔助索引在 TiDB 6.6 中引入并在 7.1 中 GA。多值索引支持索引記錄到數(shù)據(jù)記錄的 N:1 映射,使得查詢可以快速檢查存儲(chǔ)在 JSON 數(shù)組中的特定值。

無論該數(shù)據(jù)存儲(chǔ)為 blob,還是郵政編碼直接存儲(chǔ)為 zip 數(shù)組,用戶都可以創(chuàng)建多值索引來定位特定郵政編碼存在于哪一行。

索引是使用表達(dá)式創(chuàng)建的,該表達(dá)式將 JSON 數(shù)據(jù)邏輯解析為生成列(Generated Column)和該列上的二級索引。如果用戶將 JSON 存儲(chǔ)為 blob,并且需要支持遍歷多層嵌套的查詢,只需創(chuàng)建一個(gè)索引以檢索。

有關(guān)用法和注意事項(xiàng)的更多詳細(xì)信息,請參閱多值索引文檔 ( https://docs.pingcap.com/tidb/dev/sql-statement-create-index/#multi-valued-index )。

2.2.2 更快的 TTL(GA)

TTL (Time to live) 在PingCAP 的 TiDB 6.5 中作為一個(gè)實(shí)驗(yàn)特性進(jìn)行了介紹,而在 7.1 中這個(gè)特性 GA 了。此外在新版本中,TiDB 節(jié)點(diǎn)可以共享 TTL 相關(guān)任務(wù)并并發(fā)執(zhí)行,從而擁有了更好的性能和資源利用率。

2.2.3 延遲物化加速分析查詢(GA)

TiFlash 是 TiDB 的列式存儲(chǔ)引擎,在 7.1 版本中延遲物化特性 GA。當(dāng)表掃描擁有高過濾性的時(shí)候,TiDB 優(yōu)化器可選擇讓 TiFlash 啟用延遲物化。開啟該特性后,TiFlash 支持下推部分過濾條件到 TableScan 算子,即先掃描過濾條件相關(guān)的列數(shù)據(jù),過濾得到符合條件的行后,再掃描這些行的其他列數(shù)據(jù),繼續(xù)后續(xù)計(jì)算,從而減少 IO 掃描和數(shù)據(jù)處理的計(jì)算量。

此功能的影響取決于實(shí)際負(fù)載和數(shù)據(jù)分布。在某些情況下,它可以顯著減少延遲(在PingCAP 的測試中延遲最高可降低 70%)。TiDB 的查詢優(yōu)化器可以決定是否使用它,默認(rèn)情況下打開是安全的。

2.2.4 Multi-RocksDB 存儲(chǔ)引擎帶來巨大性能提升

在 TiDB 6.6 中,PingCAP 引入了對 TiKV 存儲(chǔ)架構(gòu)的重大更改。雖然這個(gè)架構(gòu)仍然是實(shí)驗(yàn)性的(默認(rèn)關(guān)閉,并且只能在新集群中啟用),但在這個(gè) LTS 版本中,該特性獲得重大加強(qiáng),并在預(yù)生產(chǎn)環(huán)境中收到了很好的測試反饋。

在 TiDB 6.6 之前,單一 TiKV 節(jié)點(diǎn)所有 Region 共享一個(gè) RockDB 存儲(chǔ)引擎。新架構(gòu)則將不同 Region 分別存放在不同 RocksDB。新架構(gòu)的好處是顯著的:

● 減少 RocksDB 對應(yīng)的 LSM 負(fù)擔(dān),增加了吞吐量,測試結(jié)果顯示寫入吞吐量 增加了 200% 

● 使用不同 RocksDB 也會(huì) 減少 Compaction 帶來的寫放大,降低資源消耗。

● 更好的寫入吞吐使集群的擴(kuò)展 速度提高 500% 。

● 在測試一些真實(shí)的客戶工作負(fù)載時(shí),PingCAP 觀察到尾部延遲 減少了近 50% 。

● 更小的單位存儲(chǔ)消耗,使得集群可擴(kuò)展性進(jìn)一步增強(qiáng)。

在 TiDB 7.1 中,PingCAP 進(jìn)一步提高了該特性的性能和穩(wěn)定性,并添加了網(wǎng)絡(luò)帶寬優(yōu)化。當(dāng)前仍然缺失的是 TiCDC、BR 等生態(tài)工具的支持,當(dāng)這些完成后PingCAP 將宣布這個(gè)特性 GA。

有關(guān)更多詳細(xì)信息,請參閱產(chǎn)品文檔 ( https://docs.pingcap.com/tidb/dev/partitioned-raft-kv )。

2.2.5 Online DDL 的大幅提升(實(shí)驗(yàn)特性)

在 TiDB 7.1 中,類似于前述 TTL 改進(jìn),PingCAP 引入了跨 TiDB 節(jié)點(diǎn)分配 DDL 作業(yè)的框架,以進(jìn)一步提高性能。

更多 TiDB 7.1 版本新功能,請查閱 TiDB 官網(wǎng) Release Notes , 立即 下載試用 ,開啟 TiDB 體驗(yàn)之旅。

標(biāo)簽:

相關(guān)閱讀

精彩推薦

相關(guān)詞

推薦閱讀