近日,企業(yè)級開源分布式數(shù)據(jù)庫廠商 PingCAP 正式發(fā)布TiDB 7.0 。TiDB 7.0 聚焦于幫助用戶通過可靠性能和簡化數(shù)據(jù)庫操作來快速響應(yīng)業(yè)務(wù)需求,從而滿足客戶的高期望值,并提升開發(fā)人員和 IT 運(yùn)維人員的生產(chǎn)力。新版本中,TiDB 在可擴(kuò)展性與性能、穩(wěn)定性與高可用、SQL 以及 可觀測性幾個(gè)領(lǐng)域獲得持續(xù)提升,累計(jì)引入新特性 20 余項(xiàng),優(yōu)化功能 50 余項(xiàng)。TiDB 7.0 是 TiDB 7 系列首個(gè) DMR 版本,適用于開發(fā)、測試和 PoC 等場景。
【資料圖】
在 7 系列版本以及之后 2-3 年的時(shí)間里, TiDB 在不斷迭代中將擁有:
更強(qiáng)的基礎(chǔ)能力(核心性能,擴(kuò)展性,性價(jià)比,云原生等);更加多元化的場景支持(多租戶,更多數(shù)據(jù)模型支持,更好的生態(tài)適配);更順滑的運(yùn)維體驗(yàn)(更強(qiáng)的 DDL 能力,以 SQL 為統(tǒng)一界面的運(yùn)維體驗(yàn)等,智能運(yùn)維);更可靠更安全(更高的可用性,更好的安全體系整合,更多合規(guī)認(rèn)證)。這些主題都將逐步在 7 系列以及后續(xù)版本中落實(shí),給予用戶更優(yōu)的使用體驗(yàn),讓 TiDB 變成一個(gè)好用且泛用,可靠且經(jīng)濟(jì)的選擇。具體到 7.0 版本,TiDB 初步提供了更好的資源管控能力,讓 TiDB 針對 SaaS 和多平臺(tái)統(tǒng)一共存等場景有了根本性的解決方案;其次,TiFlash 發(fā)布了面向云的存算分離新架構(gòu),這使其可以真正做到存算資源解耦,計(jì)算資源可以按需啟停,且基于 S3 的存儲(chǔ)設(shè)計(jì)也將大幅降低存儲(chǔ)成本;而諸如分析引擎支持落盤,自動(dòng)執(zhí)行計(jì)劃緩存等,則是針對企業(yè)級場景做出的必要強(qiáng)化;最后,TiDB 7.0 提供了對 MySQL 8.0 的兼容,這將使得相關(guān)用戶能更方便地遷移到 TiDB。
1、資源管控增強(qiáng)多租戶形態(tài)下工作負(fù)載穩(wěn)定性
資源管控特性(Resource Control)在 TiDB 6.6 中引入(實(shí)驗(yàn)特性),在 TiDB 7.0 中得到增強(qiáng)和優(yōu)化,極大地提升 TiDB 集群的資源利用效率和性能表現(xiàn),為穩(wěn)定的多租戶奠定了基礎(chǔ)。資源管控特性對 TiDB 具有里程碑的意義,用戶可以將一個(gè)分布式數(shù)據(jù)庫集群劃分成多個(gè)邏輯單元,將不同的數(shù)據(jù)庫用戶映射到對應(yīng)的資源組中,并根據(jù)需要設(shè)置每個(gè)資源組的配額。該功能允許為一個(gè)或多個(gè)會(huì)話組設(shè)置資源上限,如果來自某個(gè)工作負(fù)載或應(yīng)用程序的消耗異常重,則其資源消耗將被限制在配額內(nèi),以防止對其他更關(guān)鍵的工作負(fù)載造成干擾。
資源管控適用于以下場景:
用戶可以將多個(gè)應(yīng)用程序合并到單個(gè) TiDB 集群中,降低 TCO 并保證重要工作負(fù)載所需的資源。用戶可以在業(yè)務(wù)運(yùn)營時(shí)間內(nèi)安全運(yùn)行批處理任務(wù)。模擬環(huán)境(Staging Environments)可共享具有受資源管控限制的單個(gè) TiDB 集群。
會(huì)話可通過三種方式綁定到資源組: 通過 CREATE USER 或 ALTER USER 語句將用戶綁定到特定的資源組,使得用戶會(huì)話始終受到設(shè)定邊界約束; 通過 SET RESOURCE GROUP 設(shè)置當(dāng)前會(huì)話的資源組; 也可通過優(yōu)化器 Hint RESOURCE_GROUP() 設(shè)置當(dāng)前語句的資源組。
2、TiFlash 支持?jǐn)?shù)據(jù)落盤來穩(wěn)定分析工作負(fù)載
TiFlash 是 TiDB 的列存儲(chǔ)和計(jì)算引擎,是數(shù)據(jù)庫分析工作負(fù)載能力的支柱。在 TiDB 7.0 之前,TiFlash 在內(nèi)存中處理所有數(shù)據(jù)。從這個(gè)版本開始,TiFlash 支持?jǐn)?shù)據(jù)落盤功能(Spill to disk),通過調(diào)整算子內(nèi)存使用閾值,控制對應(yīng)算子的最大內(nèi)存使用量。對于大查詢而言,當(dāng)算子使用內(nèi)存超過一定閾值時(shí)會(huì)自動(dòng)將數(shù)據(jù)落盤,犧牲一定的性能換取整體分析查詢的穩(wěn)定性。數(shù)據(jù)落盤操作根據(jù)用戶配置參數(shù)進(jìn)行,并適用于單個(gè)推送下去的操作。由于該優(yōu)化發(fā)生在單個(gè)運(yùn)算符級別上,因此必須在多個(gè)位置執(zhí)行數(shù)據(jù)落盤操作。在 TiDB 7.0 中,它首先被應(yīng)用于以下情況:
相等條件下的哈希連接;GROUP BYs 上的哈希聚合;窗口函數(shù)中 TopN 和排序運(yùn)算符。
在執(zhí)行這些操作期間,如果運(yùn)算符使用的內(nèi)存量超過了配置限制,會(huì)自動(dòng)將數(shù)據(jù)落盤并繼續(xù)進(jìn)行后續(xù)處理。為了說明目標(biāo)工作負(fù)載受影響程度,我們模擬了決策支持系統(tǒng),使用 TPC-H 基準(zhǔn)測試工具進(jìn)行測試,結(jié)果如下表所示:
3、自動(dòng)計(jì)劃緩存減少查詢延遲
在此之前,TiDB 已經(jīng)支持使用 PREPARE 準(zhǔn)備語句來進(jìn)行計(jì)劃緩存。TiDB 7.0 中,非 Prepare 語句的執(zhí)行計(jì)劃也能夠被緩存,使執(zhí)行計(jì)劃緩存能夠應(yīng)用于更廣泛的場景。該功能支持在會(huì)話級別上對查詢進(jìn)行緩存,全局級別的支持將在未來發(fā)布中推出。會(huì)話級別的緩存將減少由于查找正確計(jì)劃而導(dǎo)致的延遲,但可能也會(huì)增加全局緩存中可能存在重復(fù)數(shù)據(jù)時(shí)所需內(nèi)存。目前可以通過此功能進(jìn)行單表過濾和范圍查詢類型的查詢進(jìn)行緩存,但不能夠處理單表復(fù)雜查詢和 JOIN 查詢等其他類型。
4、TiFlash 支持存算分離架構(gòu),降低數(shù)據(jù)分析成本
在 TiDB 7.0 版本,TiFlash 支持存算分離和 S3 對象存儲(chǔ)(實(shí)驗(yàn)特性)。之前版本的 TiFlash 是存算一體架構(gòu),TiFlash 節(jié)點(diǎn)既是存儲(chǔ)節(jié)點(diǎn),也是計(jì)算節(jié)點(diǎn),其計(jì)算和存儲(chǔ)能力擴(kuò)展受到一定限制。同時(shí),TiFlash 節(jié)點(diǎn)只能使用本地存儲(chǔ)。在 7.0 版本中,TiFlash 支持存算分離架構(gòu),分為 Write Node 和 Compute Node 兩種節(jié)點(diǎn),可以分別部署,單獨(dú)按需擴(kuò)展,并支持將數(shù)據(jù)存儲(chǔ)在 Amazon S3 或兼容 S3 API 的對象存儲(chǔ)中。
圖:TiFlash 存算分離架構(gòu)
TiFlash 存算分離架構(gòu) 適用于高性價(jià)比的數(shù)據(jù)分析場景。 在數(shù)據(jù)量很大,但是只有少量數(shù)據(jù)被頻繁查詢,大部分冷數(shù)據(jù)很少被查詢的場景下,將經(jīng)常被查詢的數(shù)據(jù)緩存在 Compute Node 的本地 SSD 上,可以提供較快查詢性能,將大量冷數(shù)據(jù)存儲(chǔ)在成本較低的 S3 或者其他對象存儲(chǔ)上,從而節(jié)省存儲(chǔ)成本。 在計(jì)算資源需求有明顯的波峰和波谷場景下,例如晚上執(zhí)行的重型對賬查詢,對計(jì)算資源要求較高,可以臨時(shí)擴(kuò)展 Compute Node,其他時(shí)間可以用較少的 Compute Node 完成查詢?nèi)蝿?wù)。 TiFlash 的存算分離架構(gòu)大幅降低了使用 TiFlash 支持分析工作負(fù)載的成本,并且提供了一定程度的工作負(fù)載隔離。 目前,TiUP 和 TiDB Operator 已經(jīng)支持部署和縮放 TiFlash 獨(dú)立組件的能力。
5、TTL 定期刪除過期數(shù)據(jù),為系統(tǒng)減負(fù)
TiDB 6.5 引入了 Time to live(TTL)實(shí)驗(yàn)特性,提供了行級別的生命周期控制策略,該項(xiàng)特性在 TiDB 7.0 中正式 GA。TTL 是一種通過 SQL 配置設(shè)置表中行到期時(shí)間的方式,幫助用戶周期性且及時(shí)地清理不需要的數(shù)據(jù),并盡量減少對用戶負(fù)載的影響。TTL 以表為單位,并發(fā)地分發(fā)不同的任務(wù)到不同的 TiDB Server 節(jié)點(diǎn)上,進(jìn)行并行刪除處理。在某些情況下,較大的表格意味著查詢時(shí)間更長;較大的表格意味著更多的存儲(chǔ)成本;在 TiDB 中,一個(gè)表越大,Region 就越多,限制表格大小可以減輕系統(tǒng)負(fù)擔(dān);各種合規(guī)性要求可能需要設(shè)置數(shù)據(jù)過期。基于成本、性能或安全等因素考慮,數(shù)據(jù)庫管理員可以配置自動(dòng)檢查并刪除過期的表格行數(shù)據(jù),例如定期刪除驗(yàn)證碼、短網(wǎng)址記錄、不需要的歷史訂單、計(jì)算的中間結(jié)果等。
6、使用 Key 分區(qū)提高可擴(kuò)展性
在 7.0 之前,TiDB 支持 Hash、Range 和 List 分區(qū)。新版本引入了 key 分區(qū),與 Hash 分區(qū)類似,Key 分區(qū)可以保證將數(shù)據(jù)均勻地分散到一定數(shù)量的分區(qū)里面。Hash 分區(qū)只能根據(jù)一個(gè)指定的整數(shù)表達(dá)式或字段進(jìn)行分區(qū),而 Key 分區(qū)可以根據(jù)字段列表進(jìn)行分區(qū),且 Key 分區(qū)的分區(qū)字段不局限于整數(shù)類型。Key 分區(qū)提供了一種更靈活的方式來對數(shù)據(jù)集進(jìn)行劃分以改善集群的可擴(kuò)展性。
7、使用 Reorganize Partition 適應(yīng)不斷變化的需求
TiDB 長期以來一直支持分區(qū),修改分區(qū)表的唯一方法是添加或刪除分區(qū)和截?cái)?LIST/RANGE 分區(qū)。TiDB 7.0 TiDB 支持 ALTER TABLE... REORGANIZE PARTITION 語法,用戶可以對表的部分或所有分區(qū)進(jìn)行重新組織,包括合并、拆分、或者其他修改,并且不丟失數(shù)據(jù),增加了可用性和靈活性以滿足不斷變化的需求。
8、使用 Load Data 從遠(yuǎn)程存儲(chǔ)導(dǎo)入數(shù)據(jù)
TiDB 7.0 中, LOAD DATA 語句集成 TiDB Lightning,用戶可以使用 LOAD DATA 語句完成原先需要使用 TiDB Lightning 才能完成的數(shù)據(jù)導(dǎo)入任務(wù)(實(shí)驗(yàn)特性),不僅可以省去 TiDB Lightning 的部署和管理成本,還可以借助 TiDB Lightning 的功能極大擴(kuò)展 LOAD DATA 語句的能力,包括:支持從 Amazon S3 和 Google Cloud Storage 導(dǎo)入數(shù)據(jù)到 TiDB,且支持使用通配符一次性匹配多個(gè)源文件導(dǎo)入到 TiDB;支持查詢?nèi)蝿?wù)狀態(tài),添加操作便利性等。
關(guān)鍵詞:
關(guān)于我們 廣告服務(wù) 手機(jī)版 投訴文章:435 226 40@qq.com
Copyright (C) 1999-2020 www.w4vfr.cn 愛好者日報(bào)網(wǎng) 版權(quán)所有 聯(lián)系網(wǎng)站:435 226 40@qq.com