iDB 5.0.0-rc 版本是 5.0 版本的前序版本。在 5.0 版本中,,我們專注于幫助企業(yè)基于 TiDB 數(shù)據(jù)庫快速構(gòu)建應(yīng)用程序,,使企業(yè)在構(gòu)建過程中無需擔(dān)心數(shù)據(jù)庫的性能、性能抖動(dòng),、安全,、高可用、容災(zāi),、SQL 語句的性能問題排查等問題,。 在 TiDB 5.0 版本中,你可以獲得以下關(guān)鍵特性: 開啟聚簇索引功能,,提升數(shù)據(jù)庫的性能,。例如:TPC-C tpmC 測試下的性能提升了 39%。 開啟異步提交事務(wù)功能,,降低寫入數(shù)據(jù)的延遲,。例如:Sysbench oltp-insert 測試中延遲降低了 37.3%。 通過提升優(yōu)化器的穩(wěn)定性站長博客及限制系統(tǒng)任務(wù)對 I/O,、網(wǎng)絡(luò),、CPU、內(nèi)存等資源的占用,,降低系統(tǒng)的抖動(dòng),。例如:長期測試 72 小時(shí),衡量 Sysbench TPS 抖動(dòng)標(biāo)準(zhǔn)差的值從 11.09% 降低到 3.36%,。 引入 Raft Joint Consensus 算法,,確保 Region 成員變更時(shí)系統(tǒng)的可用性。 優(yōu)化 EXPLAIN 功能,、引入不可見索引等功能幫助提升 DBA 調(diào)試及 SQL 語句的效率,。 通過備份文件到 AWS S3、Google Cloud GCS 或者從 AWS S3,、Google Cloud GCS 恢復(fù)到 TiDB,,確保企業(yè)數(shù)據(jù)的可靠性,。 提升從 AWS S3 或者 TiDB/MySQL導(dǎo)入導(dǎo)出數(shù)據(jù)的性能,幫忙企業(yè)在云上快速構(gòu)建應(yīng)用,。例如:導(dǎo)入 1TiB TPC-C 數(shù)據(jù)性能提升了 40%,,由 254 GiB/h 提升到 366 GiB/h。 SQL 支持聚簇索引(實(shí)驗(yàn)特性) 開啟聚簇索引功能后,,TiDB 性能在以下條件下會(huì)有較大幅度的提升, 例如: TPC-C tpmC 的性能提升了 39%,。聚簇索引主要在以下條件時(shí)會(huì)有性能提升: 插入數(shù)據(jù)時(shí)會(huì)減少一次從網(wǎng)絡(luò)寫入索引數(shù)據(jù)。 等值條件查詢僅涉及主鍵時(shí)會(huì)減少一次從網(wǎng)絡(luò)讀取數(shù)據(jù),。 范圍條件查詢僅涉及主鍵時(shí)會(huì)減少多次從網(wǎng)絡(luò)讀取數(shù)據(jù),。 -等值或范圍條件查詢涉及主鍵的前綴時(shí)會(huì)減少多次從網(wǎng)絡(luò)讀取數(shù)據(jù)。 聚簇索引定義了數(shù)據(jù)在表中的物理存儲(chǔ)順序,,表的數(shù)據(jù)只能按照聚簇索引的定義進(jìn)行排序,,每個(gè)表只能有一個(gè)聚簇索引。 用戶可通過修改 tidb_enable_clustered_index 變量的方式開啟聚簇索引功能,。開啟后僅在創(chuàng)建新表時(shí)生效,,適用于主鍵是多個(gè)列或者單個(gè)列的非整數(shù)類型。如果主鍵是單列整數(shù)類型或者表沒有主鍵,,系統(tǒng)會(huì)按照原有的方式進(jìn)行數(shù)據(jù)排序,,不受聚簇索引的影響。 例如,,可通過 select tidb_pk_type from information_schema.tables where table_name = '{tbl_name}' 語名可查詢 tbl_name 是否有聚簇索引,。 相關(guān) issue 支持不可見索引 DBA 調(diào)試和選擇相對最優(yōu)的索引時(shí),可以通過 SQL 語句將某個(gè)索引設(shè)置成 Visible 或者 Invisible,,避免執(zhí)行消耗資源較多的操作,,例如:DROP INDEX 或 ADD INDEX。 DBA 通過 ALTER INDEX 語句來修改某個(gè)索引的可見性,。修改后優(yōu)化器會(huì)根據(jù)索引的可見性決定是否將此索引加入到索引列表中,。 相關(guān) issue 支持 EXCEPT/INTERSECT 操作符 INTERSECT 操作符是一個(gè)集合操作符,返回兩個(gè)或者多個(gè)查詢結(jié)果集的交集,。一定程度上可以替代 Inner Join 操作符,。 EXCEPT 操作符是一個(gè)集合操作符,將兩個(gè)查詢語句的結(jié)果合并在一起,,并返回在第一個(gè)查詢語句中有但在第二個(gè)查詢句中不存在的結(jié)果集,。 相關(guān) issue 事務(wù) 提升悲觀事務(wù)執(zhí)行成功的概率 悲觀事務(wù)模式下,如果事務(wù)所涉及到的表存在并發(fā) DDL 操作和 SCHEMA VERSION 變更,,系統(tǒng)會(huì)自動(dòng)將該事務(wù)的 SCHEMA VERSION 更新到最新版本,,確保事務(wù)會(huì)提交成功,避免事務(wù)因 DDL 操作而中斷。事務(wù)中斷時(shí)客戶端會(huì)收到 Information schema is changed 的錯(cuò)誤信息,。 相關(guān) issue 字符集和排序規(guī)則 使用 utf8mb4_unicode_ci 和 utf8_unicode_ci 排序規(guī)則和字符集比較排序時(shí)不區(qū)分大小寫,。 相關(guān) issue 安全 錯(cuò)誤信息和日志信息的脫敏 系統(tǒng)在輸出錯(cuò)誤信息和日志信息時(shí),支持對敏感信息進(jìn)行脫敏處理,,避免敏感信息泄露,。敏感信息可能是身份證信息、信用卡號(hào)等,。 通過 SQL 語句修改 tidb_redact_log=1 開啟 tidb-server 的錯(cuò)誤信息和日志信息脫敏功能 通過修改 tikv-server 的 security.redact-info-log = true 配置項(xiàng)開啟錯(cuò)誤信息和日志信息脫敏功能 通過修改 pd-server 的 security.redact-info-log = true 配置項(xiàng)開啟錯(cuò)誤信息和日志信息脫敏功能 通過修改 tiflash-server 的 security.redact_info_log = true 以及 tiflash-learner 的 security.redact-info-log = true 配置項(xiàng)開啟錯(cuò)誤信息和日志信息脫敏功能 相關(guān) issue 性能提升 支持異步提交事務(wù)(實(shí)驗(yàn)特性) 開啟異步提交事務(wù)可使延遲有較大幅度的降低,,例如:Sysbench oltp-insert 測試中開啟異步提交事務(wù)的延遲與不開啟時(shí)相比降低了 37.3%。 數(shù)據(jù)庫的客戶端會(huì)同步等待數(shù)據(jù)庫通過兩階段 (2PC) 完成事務(wù)的提交,。開啟 Async Commit 特性后事務(wù)兩階段提交在第一階段提交成功后就會(huì)返回結(jié)果給客戶端,第二階段會(huì)在后臺(tái)異步執(zhí)行,。通過事務(wù)兩階段異步提交的方式降低事務(wù)提交的延遲,。 此特性只能顯式地修改 tidb_guarantee_external_consistency = ON 變量后才能保證事務(wù)的外部一致性。開啟后性能有較大幅度的下降,。 用戶可通過修改 tidb_enable_async_commit = ON 全局變量開啟此功能,。 相關(guān) issue 提升優(yōu)化器選擇索引的穩(wěn)定性(實(shí)驗(yàn)特性) 優(yōu)化器若無法長期穩(wěn)定地選擇相對合適的索引,會(huì)在很大程度上決定著查詢語句的延遲是否有抖動(dòng),。為確保相同的 SQL 語句不會(huì)因?yàn)榻y(tǒng)計(jì)信息缺失,、不準(zhǔn)確等因素導(dǎo)致優(yōu)化器每次都從多個(gè)候選索引選持不同的索引,我們對統(tǒng)計(jì)信息模塊進(jìn)行了完善和重構(gòu),。主要完善如下: 擴(kuò)展統(tǒng)計(jì)信息功能,,收集多列 NDV、多列順序依賴性,、多列函數(shù)依賴性等信息,,幫助優(yōu)化器選擇相對較優(yōu)的索引。 重構(gòu)統(tǒng)計(jì)信息模塊,,幫助優(yōu)化器選擇相對較優(yōu)的索引,。 從 SKetch 中刪除 TopN 值。 重構(gòu) TopN 搜索邏輯,。 從直方圖中刪除 TopN 信息,,建立直方圖的索引,方便維護(hù) Bucket NDV,。 相關(guān) issue 優(yōu)化因調(diào)度功能不完善或者 I/O 限流不完善引起的性能抖動(dòng)問題 TiDB 調(diào)度過程中會(huì)占用 I/O,、Network、CPU,、Memory 等資源,,若不對調(diào)度的任務(wù)進(jìn)行控制,QPS 和延時(shí)會(huì)因?yàn)橘Y源被搶占而出現(xiàn)性能抖動(dòng)問題。通過以下幾項(xiàng)的優(yōu)化,,長期測試 72 小時(shí),,衡量 Sysbench TPS 抖動(dòng)標(biāo)準(zhǔn)差的值從 11.09% 降低到 3.36%。 減少節(jié)點(diǎn)的容量總是在水位線附近波動(dòng)引起的調(diào)度及 PD 的 store-limit 配置項(xiàng)設(shè)置過大引起的調(diào)度,,引入一套新的調(diào)度算分公式并通過 region-score-formula-version = v2 配置項(xiàng)啟用新的調(diào)度算分公式 通過修改 enable-cross-table-merge = true 開啟跨 Region 合并功能,,減少空 Region 的數(shù)量 TiKV 后臺(tái)壓縮數(shù)據(jù)會(huì)占用大量 I/O 資源,系統(tǒng)通過自動(dòng)調(diào)整壓縮的速度來平衡后臺(tái)任務(wù)與前端的數(shù)據(jù)讀寫對 I/O 資源的爭搶,,通過 rate-limiter-auto-tuned 配置項(xiàng)開啟此功能后,,延遲抖動(dòng)比未開啟此功能時(shí)的抖動(dòng)大幅減少 TiKV 在進(jìn)行垃圾數(shù)據(jù)回收和數(shù)據(jù)壓縮時(shí),分區(qū)會(huì)占用 CPU,、I/O 資源,,系統(tǒng)執(zhí)行這兩個(gè)任務(wù)過程中存在數(shù)據(jù)重疊。GC Compaction Filter 特性將這兩個(gè)任務(wù)合二為一在同一個(gè)任務(wù)中完成,,減 I/O 的占用,。此特性為實(shí)驗(yàn)性特性,通過 gc.enable-compaction-filter = ture 開啟 # TiFlash 壓縮或者整理數(shù)據(jù)會(huì)占用大量 I/O 資源,,系統(tǒng)通過限制壓縮或整理數(shù)據(jù)占用的 I/O 量緩解資源爭搶,。此特性為實(shí)驗(yàn)性特性,通過 bg_task_io_rate_limit 配置項(xiàng)開啟限制壓縮或整理數(shù)據(jù) I/O 資源,。 相關(guān) issue 提升 Real-time BI / Data Warehousing 場景下 TiFlash 的穩(wěn)定性 限制 DeltaIndex 的內(nèi)存使用量,,避免大數(shù)據(jù)量下內(nèi)存使用過多導(dǎo)致系統(tǒng) OOM。 限制后臺(tái)數(shù)據(jù)整理任務(wù)使用的 I/O 寫流量,,降低對前臺(tái)任務(wù)的影響,。 新增加線程池,排隊(duì)處理 coprocessor 任務(wù),,避免高并發(fā)處理 coprocessor 時(shí)內(nèi)存占用過多導(dǎo)致系統(tǒng) |
|