摘要:用動態(tài)規(guī)劃決定連接的執(zhí)行順序,當參與連接的表數(shù)量不多于時啟用。在邏輯優(yōu)化階段消除聚合函數(shù)時特殊處理,防止產(chǎn)生錯誤的執(zhí)行結(jié)果。該特性通過對進行執(zhí)行計劃綁定,以確保執(zhí)行穩(wěn)定性。執(zhí)行引擎支持對和算子進行內(nèi)存追蹤控制。
2019 年 5 月 10 日,TiDB 發(fā)布 3.0.0-rc.1 版,對應(yīng)的 TiDB-Ansible 版本為 3.0.0-rc.1。相比 3.0.0-beta.1 版本,該版本對系統(tǒng)穩(wěn)定性、易用性、功能、優(yōu)化器、統(tǒng)計信息以及執(zhí)行引擎做了很多改進。
TiDB
SQL 優(yōu)化器
利用列之間的順序相關(guān)性提升代價估算準確度,并提供啟發(fā)式參數(shù) tidb_opt_correlation_exp_factor 用于控制在相關(guān)性無法被直接用于估算的場景下對索引掃描的偏好程度。
當過濾條件中包含相關(guān)列時,在抽取復(fù)合索引的訪問條件時盡可能多地匹配索引的前綴列。
用動態(tài)規(guī)劃決定連接的執(zhí)行順序,當參與連接的表數(shù)量不多于 tidb_opt_join_reorder_threshold 時啟用。
在構(gòu)造 Index Join 的的內(nèi)表中,以復(fù)合索引作為訪問條件時,盡可能多地匹配索引的前綴列。
提升對單列索引上值為 NULL 的行數(shù)估算準確度。
在邏輯優(yōu)化階段消除聚合函數(shù)時特殊處理 GROUP_CONCAT ,防止產(chǎn)生錯誤的執(zhí)行結(jié)果。
當過濾條件為常量時,正確地將它下推到連接算子的子節(jié)點上。
在邏輯優(yōu)化階段列剪裁時特殊處理一些函數(shù),例如 RAND() ,防止產(chǎn)生和 MySQL 不兼容的執(zhí)行結(jié)果。
支持 FAST ANALYZE,通過tidb_enable_fast_analyze 變量控制。該特性通過用對 Region 進行采樣取代掃描整個 region 的方式加速統(tǒng)計信息收集。
支持 SQL PLAN MANAGEMENT。該特性通過對 SQL 進行執(zhí)行計劃綁定,以確保執(zhí)行穩(wěn)定性。該特性目前處于測試階段,僅支持對 SELECT 語句使用綁定的執(zhí)行計劃,不建議在生產(chǎn)場景中直接使用。
執(zhí)行引擎
支持對 TableReader、IndexReader 和 IndexLookupReader 算子進行內(nèi)存追蹤控制。
在慢日志中展示更多 COPROCESSOR 端執(zhí)行任務(wù)相關(guān)細節(jié)。如 COPROCESSOR 任務(wù)數(shù),平均/最長/90% 執(zhí)行/等待時間,執(zhí)行/等待時間最長的 TiKV 地址等。
支持 PREPARE 不含占位符的 DDL 語句。
Server
TiDB 啟動時,只允許 DDL owner 執(zhí)行 bootstrap
新增 tidb_skip_isolation_level_check 變量控制檢查隔離級別設(shè)置為 SERIALIZABLE 時不報錯
在慢日志中,將隱式提交的時間與 SQL 執(zhí)行時間融合在一起
RBAC 權(quán)限管理
支持 SHOW GRANT
支持 SET DEFAULT ROLE
支持 GRANT ROLE
修正了插件退出時導(dǎo)致 TiDB 退出的問題
修正只讀語句被錯誤地放到事務(wù)歷史中的問題
kill 語句可以更快的結(jié)束 SQL 的執(zhí)行,并快速釋放資源
增加啟動選項 config-check 來檢查配置文件的合法性
修正非嚴格模式下對于寫入 NULL 字段的合法性檢查
DDL
為 CREATE TABLE 添加了 pre_split_regions 選項,該選項可以在建表時預(yù)先分配 Table Region,避免建表后大量寫入造成的寫熱點
優(yōu)化了部分 DDL 語句的執(zhí)行性能
FULLTEXT KEY 新增不支持全文索引的 warning
修正了舊版本 TiDB 中,UTF8 和 UTF8MB4 編碼的兼容性問題
修正了一個表的 shard_row_id_bits 的潛在 BUG
修正了 ALTER TABLE Charset 后,Column Charset 不會跟隨變化的 BUG
修正了使用 BINARY/BIT 作為 Column Default Value 時,SHOW COLUMN 可能出錯的 BUG
修正了 SHOW FULL COLUMNS 語句中,CHARSET / COLLATION 顯示的兼容性問題
現(xiàn)在 SHOW COLLATIONS 語句只會列出 TiDB 所實際支持的 COLLATIONS
PD
升級 ETCD 版本
統(tǒng)一 etcd 的日志格式與 pd server 一致
修復(fù) prevote 可能無法選出 Leader 的問題
快速 drop 掉會失敗的 propose 和 read 請求,減少阻塞后面的請求時間
修復(fù) Lease 的死鎖問題
修復(fù) store 讀熱點的 keys 統(tǒng)計不正確問題
支持從單一 PD 節(jié)點強制重建 PD 集群
修復(fù) Scatter Region 產(chǎn)生無效 Operator Step 的問題
修復(fù) Region Merge Operator 超時時間過短的問題
熱點調(diào)度使用高優(yōu)先級
添加 PD server 端處理 TSO 請求的耗時 Metrics
添加相對應(yīng)的 Store ID 和 Address 到 store 相關(guān)的 Metrics
支持 GetOperator 服務(wù)
修復(fù) Heartbeat stream 下發(fā)送 error 找不到 store 的問題
TiKV
Engine
修復(fù)讀流量統(tǒng)計不準確問題
修復(fù) prefix extractor panic 的問題
優(yōu)化內(nèi)存管理,減少 Iterator Key Bound Option 的內(nèi)存分配和拷貝
修復(fù) Merge Region 時未考慮 Learner log gap 造成的 panic 問題
支持不同的 column families 共享 block cache
Server
減少 batch commands 的上下文切換開銷
檢查 seek iterator status 的合法性
RaftStore
可配置化 properties index distance
Coprocessor
新增 batch index scan executor
新增向量化 evaluation 框架
新增 batch 執(zhí)行器統(tǒng)計框架
構(gòu)建 RPN expression 時檢查 max column 以防止 evaluation 階段 column offset 越界的問題
實現(xiàn) BatchLimitExecutor
ReadPool 使用 tokio-threadpool 替換原本的 futures-cpupool,減少 context switch
新增 batch 聚合框架
新增 BatchSelectionExecutor
實現(xiàn) batch aggression function AVG
實現(xiàn) RPN function LogicalAnd
Misc
支持選用 tcmalloc 為內(nèi)存分配器
Tools
TiDB-Binlog
修復(fù) unsigned int 類型的主鍵列的 binlog 數(shù)據(jù)為負數(shù),造成同步出錯中斷的問題
刪除下游是 pb 時的壓縮選項,修改下游名字 pb 成 file
Pump 新增 storage.sync-log 配置項,支持 Pump 本地存儲異步刷盤
Pump 和 Drainer 之間通訊支持流量壓縮
Drainer 新增 syncer.sql-mode 配置項,支持使用不同 sql-mode 解析 DDL query
Drainer 新增 syncer.ignore-table 配置項,支持過濾不需要同步的表
Lightning
使用 row id 或者列的默認值填充 dump 文件中缺少的 column 數(shù)據(jù)
Importer 修復(fù)部分 SST 導(dǎo)入失敗依然返回導(dǎo)入成功的 bug
Importer 支持 upload SST 到 TiKV 限速
Lightning 優(yōu)化導(dǎo)入表的順序,按照表的數(shù)據(jù)大小順序進行導(dǎo)入,減少導(dǎo)入過程中大表執(zhí)行 checksum 和 Analyze 對集群的影響,并且提高 Checksum 和 Analyze 的成功率
提升 Lightning encode SQL 性能,性能提升 50%,直接解析數(shù)據(jù)源文件內(nèi)容成 TiDB 的 types.Datum,省去 KV encoder 的多余解析工作
日志格式改為 Unified Log Format
新增一些命令行選項,即使缺少配置文件也能使用
數(shù)據(jù)同步對比工具 (sync-diff-inspector)
支持 checkpoint,記錄校驗狀態(tài),重啟后從上次進度繼續(xù)校驗
增加配置項 only-use-checksum,只通過計算 checksum 來檢查數(shù)據(jù)是否一致
TiDB-Ansible
TiKV 監(jiān)控變更以及更新 Ansible、Grafana、Prometheus 版本
summary 監(jiān)控適用于用戶查看集群狀態(tài)
trouble_shooting 監(jiān)控適用于 DBA 排查問題
details 監(jiān)控適用于開發(fā)分析問題
修復(fù)下載 Kafka 版本 Binlog 失敗的 BUG
修改操作系統(tǒng)版本限制,僅支持 CentOS 7.0 及以上,Red Hat 7.0 及以上版本的操作系統(tǒng)
滾動升級時的版本檢測改為多并發(fā)
更新 README 中文檔鏈接
移除重復(fù)的 TiKV 監(jiān)控項,新增 trouble shooting 監(jiān)控項
優(yōu)化 table-regions.py 腳本,按表顯示 leader 分布
更新 drainer 配置文件
優(yōu)化 TiDB 監(jiān)控,新增以 SQL 類別顯示延遲的監(jiān)控項
更新 Lightning 配置文件,新增 tidb_lightning_ctl 腳本
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/18013.html
摘要:提升系統(tǒng)性能算子,進一步提升執(zhí)行性能。采用存儲結(jié)構(gòu)減少內(nèi)存分配及拷貝,的共享提升命中率等手段大幅提升性能。新增系統(tǒng)配置項合法性檢查,優(yōu)化系統(tǒng)監(jiān)控項等,提升產(chǎn)品易用性。在此對各位貢獻者表示由衷的感謝。 作者:段兵 2019 年 5 月 10 日,TiDB 3.0.0-rc.1 版本正式推出,該版本對系統(tǒng)穩(wěn)定性,性能,安全性,易用性等做了較多的改進,接下來逐一介紹。 提升系統(tǒng)穩(wěn)定性 眾所周...
摘要:年月日,發(fā)布版,對應(yīng)的。相比版本,該版本對系統(tǒng)穩(wěn)定性優(yōu)化器統(tǒng)計信息以及執(zhí)行引擎做了很多改進。新特性支持支持支持支持優(yōu)化器重新支持聚合消除的優(yōu)化規(guī)則優(yōu)化子查詢,將其轉(zhuǎn)化為添加變量以支持新的優(yōu)化器。 2019 年 1 月 19 日,TiDB 發(fā)布 3.0 Beta 版,對應(yīng) master branch 的 TiDB-Ansible。相比 2.1 版本,該版本對系統(tǒng)穩(wěn)定性、優(yōu)化器、統(tǒng)計信息以...
閱讀 1589·2023-04-26 01:54
閱讀 1621·2021-09-30 09:55
閱讀 2645·2021-09-22 16:05
閱讀 1856·2021-07-25 21:37
閱讀 2620·2019-08-29 18:45
閱讀 1886·2019-08-29 16:44
閱讀 1882·2019-08-29 12:34
閱讀 1346·2019-08-23 14:02