1. 程式人生 > >TiDB 3.0 GA Release Notes

TiDB 3.0 GA Release Notes

Overview

2019 年 6 月 28 日,TiDB 釋出 3.0 GA 版本,對應的 TiDB Ansible 版本為 3.0.0。 相比於 V2.1,V3.0.0 版本在以下方面有重要改進:

  • 穩定性方面,顯著提升了大規模叢集的穩定性,叢集支援 150+ 儲存節點,300+ TB 儲存容量長期穩定執行。
  • 易用性方面有顯著的提升,降低使用者運維成本,例如:標準化慢查詢日誌,制定日誌檔案輸出規範,新增 EXPLAIN ANALYZE,SQL Trace 功能方便排查問題等。
  • 效能方面,與 2.1 相比,TPC-C 效能提升約 4.5 倍,Sysbench 效能提升 50%+。 因支援 View,TPC-H 50G Q15 可正常執行。
  • 新功能方面增加了視窗函式、檢視(實驗特性)、分割槽表、外掛系統、悲觀鎖(實驗特性)、SQL Plan Management 等特性。

TiDB

  • 新功能
    • 新增 Window Function,支援所有 MySQL 8.0 中的視窗函式,包括 NTILELEADLAGPERCENT_RANKNTH_VALUECUME_DISTFIRST_VALUELAST_VALUERANKDENSE_RANKROW_NUMBER 函式
    • 新增 View 功能(實驗特性
    • 完善 Table Partition 功能:
      • Range Partition
      • Hash Partition
    • 新增外掛系統,官方提供 IP 白名單(企業版特性
      ),審記日誌(企業版特性)等外掛
    • 新增 SQL Plan Management 功能,通過繫結 SQL 執行計劃確保查詢的穩定性(實驗特性
  • SQL 優化器
    • 優化NOT EXISTS 子查詢,轉化為 Anti Semi Join 提升效能
    • 優化 Outer Join 常量傳播,新增 Outer Join 消除優化規則,避免無效計算,提升效能
    • 優化 IN 子查詢,先聚合後執行 Inner Join,提升效能
    • 優化 Index Join,適應更多的場景,提升效能
    • 優化 Range Partition 的 Partition Pruning 優化規則,提升效能
    • 優化 _tidb_rowid 查詢邏輯,避免全表掃描,提升效能
    • 當過濾條件中包含相關列時,在抽取複合索引的訪問條件時儘可能多地匹配索引的字首列,提升效能
    • 利用列之間的順序相關性,提升代價估算準確度
    • 基於統計資訊的貪心演算法及動態規劃演算法改進了 Join Order,提升多表關聯的執行速度
    • 新增 Skyline Pruning,利用規則防止執行計劃過於依賴統計資訊,提升查詢的穩定性
    • 提升單列索引上值為 NULL 時行數估算準確度
    • 新增 FAST ANALYZE,通過在各個 Region 中隨機取樣避免全表掃描的方式提升統計資訊收集效能
    • 新增單調遞增的索引列增量 Analyze 功能,提升統計資訊收集效能
    • 支援 DO 語句中使用子查詢
    • 支援在事務中使用 Index Join
    • 優化 prepare/execute,支援不帶引數的 DDL 語句
    • 修改變數 stats-lease 值為 0 時系統的行為,使其自動載入統計
    • 新增匯出歷史統計資訊功能
    • 新增匯入匯出列的關聯性資訊功能
  • SQL 執行引擎
    • 優化日誌輸出,EXECUTE 語句輸出使用者變數,COMMIT 語句輸出慢查詢日誌,方便排查問題
    • 新增 EXPLAIN ANALYZE 功能,提升SQL 調優易用性
    • 新增 admin show next_row_id 功能,方便獲取下一行 ID
    • 新增JSON_QUOTEJSON_ARRAY_APPENDJSON_MERGE_PRESERVEBENCHMARKCOALESCENAME_CONST 6 個內建函式
    • 優化 Chunk 大小控制邏輯,根據查詢上下檔案動態調整,降低 SQL 執行時間和資源消耗,提升效能
    • 新增 TableReaderIndexReaderIndexLookupReader 運算元記憶體追蹤控制
    • 優化 Merge Join 運算元,使其支援空的 ON 條件
    • 優化單個表列較多時寫入效能,提升數倍效能
    • 通過支援逆序掃資料提升 admin show ddl jobs 的效能
    • 新增 split table region 語句,手動分裂表的 Region,緩解熱點問題
    • 新增 split index region 語句,手動分裂索引的 Region 緩解熱點問題
    • 新增黑名單禁止下推表示式到 Coprocessor 功能
    • 優化 Expensive Query 日誌,在日誌中列印執行時間或者使用記憶體超過閾值的 SQL 查詢
  • DDL
    • 支援字符集從 utf8 轉換到 utf8mb4 的功能
    • 修改預設字符集從 utf8 變為 utf8mb4
    • 新增 alter schema 語句修改資料庫 charset 和 collation 功能
    • 新增 ALTER ALGORITHM INPLACE/INSTANT 功能
    • 新增 SHOW CREATE VIEW 功能
    • 新增 SHOW CREATE USER 功能
    • 新增快速恢復誤刪除的表功能
    • 新增動態調整 ADD INDEX 的併發數功能
    • 新增 pre_split_regions 選項,在 CREATE TABLE 時預先分配 Region,緩解建表後大量寫入造成的寫熱點問題
    • 新增通過 SQL 語句指定表的索引及範圍分裂 Region,緩解熱點問題
    • 新增 ddl_error_count_limit 全域性變數,控制 DDL 任務重次數
    • 新增列屬性包含 AUTO_INCREMENT 時利用 SHARD_ROW_ID_BITS 打散行 ID 功能,緩解熱點問題
    • 優化無效 DDL 元資訊存活時間,使叢集升級後一段時間 DDL 操作比較慢的情況變短
  • 事務
    • 新增悲觀事務模型(實驗特性
    • 優化事務處理邏輯,適應更多場景,具體如下:
      • tidb_disable_txn_auto_retry 的預設值為 on,即不會重試非自動提交的事務
      • 新增 tidb_batch_commit 系統變數控制將事務拆分成多個事務併發執行
      • 新增 tidb_low_resolution_tso 系統變數控制批量獲取 tso 個數,減少事務獲取 tso 的次數以適應某些資料一致性要求較低的場景
      • 新增 tidb_skip_isolation_level_check 變數控制事務檢查隔離級別設定為 SERIALIZABLE 時是否報錯
      • 修改 tidb_disable_txn_auto_retry 系統變數的行為,修改為影響所有的可重試錯誤
  • 許可權管理 - 對 ANALYZEUSESET GLOBALSHOW PROCESSLIST 語句進行許可權檢查 - 新增基於角色的許可權訪問控制功能 (RBAC)(實驗特性
  • Server
    • 優化慢查詢日誌,具體包括:
      • 重構慢查詢日誌格式
      • 優化慢查詢日誌內容
      • 優化查詢慢查詢日誌的方法,通過記憶體表 INFORMATION_SCHEMA.SLOW_QUERYADMIN SHOW SLOW 語句查詢慢查詢日誌
    • 制定日誌格式規範,重構日誌系統,方便工具收集分析
    • 新增 SQL 語句管理 TiDB Binlog 服務功能,包括查詢狀態,開啟 TiDB Binlog,維護髮送 TiDB Binlog 策略
    • 新增通過 unix_socket 方式連線資料庫
    • 新增 SQL 語句 Trace 功能
    • 新增 /debug/zip HTTP 介面,獲取 TiDB 例項的資訊,方便排查問題
    • 優化監控項,方便排查問題,如下:
      • 新增 high_error_rate_feedback_total 監控項,監控真實資料量與統計資訊估算資料量之間的差距
      • 新增 Database 維度的 QPS 監控項
    • 優化系統初始化流程,僅允許 DDL Owner 執行初始化操作,縮短初始化或升級過程中的啟動時間
    • 優化 kill query 語句執行邏輯,提升效能,確保資源正確釋放
    • 新增啟動選項 config-check 檢查配置檔案合法性
    • 新增 tidb_back_off_weight 系統變數,控制內部出錯重試的退避時間
    • 新增 wait_timeoutinteractive_timeout 系統變數,控制連線空閒超過變數的值,系統自動斷開連線。
    • 新增連線 TiKV 的連線池,減少連線建立時間
  • 相容性
    • 支援 ALLOW_INVALID_DATES SQL mode
    • 支援 MySQL 320 握手協議
    • 支援將 unsigned bigint 列宣告為自增列
    • 支援 SHOW CREATE DATABASE IF NOT EXISTS 語法
    • 優化 load data 對 CSV 檔案的容錯
    • 過濾條件中包含使用者變數時謂詞不下推,相容 MySQL Window Function 中使用使用者變數行為

PD

  • 新增從單個節點重建叢集的功能
  • 將 Region 元資訊從 etcd 移到 go-leveldb 儲存引擎,解決大規模叢集 etcd 儲存瓶頸問題
  • API
    • 新增 remove-tombstone 介面,用於清理 Tombstone Store
    • 新增 ScanRegions 介面,用於批量查詢 Region 資訊
    • 新增 GetOperator 介面,用於查詢執行中的 Operator
    • 優化 GetStores 介面的效能
  • 配置
    • 優化配置檢查邏輯,防止配置項錯誤
    • 新增 enable-two-way-merge,用於控制 Region merge 的方向
    • 新增 hot-region-schedule-limit,用於控制熱點 Region 排程速度
    • 新增 hot-region-cache-hits-threshold,連續命中閥值用於判斷熱點
    • 新增 store-balance-rate 配置,用於控制每分鐘產生 balance Region Operator 數量的上限
  • 排程器優化
    • 新增 Store Limit 機制限制排程速度,使得速度限制適用於不同規模的叢集
    • 新增 waitingOperator 佇列,用於優化不同調度器之間資源競爭的問題
    • 支援排程限速功能,主動向 TiKV 下發排程操作,限制單節點同時執行排程任務的個數,提升排程速度
    • Region Scatter 排程不再受 limit 機制限制,提升排程的速度
    • 新增 shuffle-hot-region 排程器,解決穩定性測試易用性問題
  • 模擬器
    • 新增資料匯入場景模擬
    • 新增為 Store 設定不同的心跳間隔的功能
  • 其他
    • 升級 etcd,解決輸出日誌格式不一致,prevote 時選舉不出 Leader,Lease 死鎖等問題
    • 制定日誌格式規範,重構日誌系統,方便工具收集分析
    • 新增排程引數,叢集 Label 資訊,PD 處理 TSO 請求的耗時,Store ID 與地址資訊等監控指標

TiKV

  • 新增分散式 GC 以及並行 Resolve Lock 功能,提升 GC 的效能
  • 新增逆向 raw_scanraw_batch_scan 功能
  • 新增多執行緒 Raftstore 和 Apply 功能,提升單節點內可擴充套件性,提升單節點內併發處理能力,提升單節點的資源利用率,降低延時,同等壓力情況下效能提升 70%
  • 新增批量接收和傳送 Raft 訊息功能,寫入密集的場景 TPS 提升 7%
  • 新增 Apply snapshot 之前檢查 RocksDB level 0 檔案的優化,避免產生 Write stall
  • 新增 Titan 儲存引擎外掛,提升 Value 超過 1KiB 時系統的效能,一定程度上緩解寫放大問題(實驗特性
  • 新增悲觀事務模型(實驗特性
  • 新增通過 HTTP 方式獲取監控資訊功能
  • 修改 Insert 語義,僅在 Key 不存在的時候 Prewrite 才成功
  • 制定日誌格式規範,重構日誌系統,方便工具收集分析
  • 新增配置資訊,Key 越界相關的效能監控指標
  • RawKV 使用 Local Reader,提升效能
  • Engine
    • 優化記憶體管理,減少 Iterator Key Bound Option 的記憶體分配和拷貝,提升效能
    • 支援多個 column family 共享 block cache,提升資源的利用率
  • Server
    • 優化 batch commands 的上下文切換開銷,提升效能
    • 刪除 txn scheduler
    • 新增 read index,GC worker 相關監控項
  • RaftStore
    • 新增 hibernate Regions 功能,優化 RaftStore CPU 的消耗(實驗特性
    • 刪除 local reader 執行緒
  • Coprocessor
    • 重構計算框架,實現向量化運算元、向量化表示式計算、向量化聚合,提升效能
    • 支援為 TiDB EXPLAIN ANALYZE 語句提供運算元執行詳情
    • 改用 work-stealing 執行緒池模型,減少上下文切換

Tools

  • TiDB Lightning
    • 支援資料表重定向同步功能
    • 新增匯入 CSV 檔案功能
    • 提升 SQL 轉 KV 對的效能
    • 單表支援批量匯入功能,提升單表匯入的效能
    • 支援將大表的資料和索引分別匯入,提升 TiKV-Importer 匯入資料效能
    • 支援對新增檔案中缺少 Column 資料時使用 row id 或者列的預設值填充缺少的 column 資料
    • TiKV-Importer 支援對 upload SST 到 TiKV 限速功能
  • TiDB Binlog
    • Drainer 新增 advertise-addr 配置,支援容器環境中使用橋接模式
    • Pump 使用 TiKV GetMvccByKey 介面加快事務狀態查詢
    • 新增元件之間通訊資料壓縮功能,減少網路資源消耗
    • 新增 Arbiter 工具支援從 Kafka 讀取 binlog 並同步到 MySQL 功能
    • Reparo 支援過濾不需要被同步的檔案的功能
    • 新增同步 Generated column 功能
    • 新增 syncer.sql-mode 配置項,支援採用不同的 SQL mode 解析 DDL
    • 新增 syncer.ignore-table 配置項,過濾不需要被同步的表
  • sync-diff-inspector
    • 新增 checkpoint 功能,支援從斷點繼續校驗的功能
    • 新增 only-use-checksum 配置項,控制僅通過計算 checksum 校驗資料的一致性
    • 新增採用 TiDB 統計資訊以及使用多個 Column 劃分 Chunk 的功能,適應更多的場景

TiDB Ansible

  • 升級監控元件版本到安全的版本
    • Prometheus 從 2.2.1 升級到 2.8.1 版本
    • Pushgateway 從 0.4.0 升級到 0.7.0 版本
    • Node_exporter 從 0.15.2 升級到 0.17.0 版本
    • Alertmanager 從 0.14.0 升級到 0.17.0 版本
    • Grafana 從 4.6.3 升級到 6.1.6 版本
    • Ansible 從 2.5.14 升級到 2.7.11 版本
  • 新增 TiKV summary 監控面板,方便檢視叢集狀態
  • 新增 TiKV trouble_shooting 監控面板,刪除重複項,方便排查問題
  • 新增 TiKV details 監控面板,方便除錯排查問題
  • 新增滾動升級併發檢測版本是否一致功能,提升滾動升級性能
  • 新增 lightning 部署運維功能
  • 優化 table-regions.py 指令碼,新增按表顯示 leader 分佈功能
  • 優化 TiDB 監控,新增以 SQL 類別顯示延遲的監控項
  • 修改作業系統版本限制,僅支援 CentOS 7.0 及以上,Red Hat 7.0 及以上版本的作業系統
  • 新增預測叢集最大 QPS 的監控項,預設隱藏

相關推薦

TiDB 3.0 GA Release Notes

Overview 2019 年 6 月 28 日,TiDB 釋出 3.0 GA 版本,對應的 TiDB Ansible 版本為 3

TiDB 2.1 GA Release Notes

2018 年 11 月 30 日,TiDB 釋出 2.1 GA 版。相比 2.0 版本,該版本對系統穩定性、效能、相容性、易用性做了大量改進。 TiDB SQL 優化器 優化 Index Join 選擇範圍,提升執行效能 優化 Index Join 外表選擇,使用估算的行數較少的表作為外表 擴大 Join

ICEfaces EE 4.3.0.GA 釋出,JSF 開發框架

   ICEfaces EE 3.3.0.GA_P06 釋出了,ICEfaces 是一個基於 Ajax 的 JSF 開發框架(JavaServer Faces)。ICEfaces 原本是一個商業產品,現已基於 Mozilla Public License 協議開源。它

關於spring的spring-framework-3.0.2.RELEASE-dependencies.zip包的下載

今天在java 吧裡面發現了一個大神說,其實,ssh 已經綁架了我們java的新學者,首先,嘴面上我是不承認,但是我的內心不得不承認這是事實。ssh已經綁架了我們這些新學者,而我,作為一個新學者,竟然花費了一整個暑假在這三個框架上,說後悔,我倒不至於,但是呢,總是覺得,時間

Yasm 1.3.0 Release Notes

seh st3 require sys storage uil ble ear welcom Yasm 1.3.0 Release Notes http://yasm.tortall.net/releases/Release1.3.0.html Target Audie

Vczh Library++3.0第一個Release提供下載!

    專案主頁:http://vlpp.codeplex.com    下載頁面:http://vlpp.codeplex.com/releases/view/62850    該Release對應的原始碼:http://vlpp.codeplex.com/SourceControl/chang

著手給Vczh Library++ 3.0的指令碼引擎製作第一個Release

    Vczh Library++ 3.0這破東西也做了一年半了,因此打算給它製作第一個Release。這個Release將計劃包含下面的東西:    1、vle.exe。這是一個編譯器和虛擬機器的命令列程式。通過這個程式可以把NativeX程式編譯成assembly、可以執行基於控制檯的ass

Spark Release 2.3.0 版本釋出新特性和優化

Apache Spark 2.3.0是2.x系列中的第四個版本。此版本增加了對結構化流中的連續處理以及全新的Kubernetes Scheduler後端的支援。其他主要更新包括新的DataSource和結構化Streaming v2 API,以及一些PySpark效能增強。此

Android Studio 升級到3.0後出現編譯錯誤\.gradle\caches\transforms-1\files-1.1\*****-release.aar

Android Studio 升級到3.0後出現各種編譯問題,其中有一個問題是關於資源找不到的問題,百度了半天,也沒有相關的文章 C:\Users.gradle\caches\transforms-1\files-1.1***-release.aar\be5a

AJDK 8.0.0 Release Notes

記在這裡,便於測試。 版本號 $ java -version java version "1.8.0_66" OpenJDK Runtime Environment (Alibaba 8.0.0) (build 1.8.0_66-b60) OpenJDK 64-Bit

Reading Notes:Enterprise JavaBeans, 3.0 Chapter 2. Architectural Overview

Enterprise JavaBeans, 3.0 Chapter 2. Architectural Overview Section 2.1.  The Entity Bean A good rule of thumb is that entity beans mo

Reading Notes:Enterprise JavaBeans, 3.0 Chapter 1. Introduction

Reading  Notes:Enterprise JavaBeans, 3.0 Chapter 1. Introduction 1.1. Server-Side Components In business systems, object-oriented langua

mybatis-plus(3.0-RELEASE)邏輯刪除的坑

style del inf nbsp ase batis 對象 mil ima mybatis-plus3.0版本,TableInfoHelper類中方法:initTableFields(初始化 表主鍵,表字段)這個過程會循環遍歷對象的字段,setLogicD

WeihanLi.Npoi 1.11.0/1.12.0 Release Notes

# WeihanLi.Npoi 1.11.0/1.12.0 Release Notes ## Intro 最近 NPOI 擴充套件新更新了兩個版本,感謝 `shaka chow` 的幫忙和支援,這兩個 Feature 都是來自於他,並且幫我測試了幾個版本,還幫我提供了一個更好用的讀檔案的方式,十分感謝。

WeihanLi.Npoi 1.14.0 Release Notes

# WeihanLi.Npoi 1.14.0 Release Notes ## Intro 週末更新了一下專案,開始使用可空引用型別,並且移除了 `net45` 的支援,僅支援 `netstandard2.0` ## Changes ### Remove `net45` Support 基礎庫打算移

mysql 5.7.3.0-m13安裝教程

com 處理 技術分享 mysql 5.7 bench aid target 驗證 htm 安裝mysql百度經驗地址:(默認安裝,除了選擇不更新和選擇保存路徑,其它基本是下一步下一步) http://jingyan.baidu.com/article/7e4409

Package gtk+-3.0 was not found in the pkg-config search path

path 二進制 all 項目 有時 rpm fedora ack share 問題描述:   在fedora21系統上通過rpmbuild構建fcitx的二進制包時出現以上錯誤,經老程序員指點:“是相應的開發包沒有安裝” 解決辦法:   yum installl gtk3

Cocos2d-x 3.0 打造一個全平臺概念文件夾

android cocos2d www 全平臺 -s http 概念 1-1 style Cocos2d-x 3.0 打造一個全平臺概念文件夾http:// www.eoeandroid.com/thread-328055-1-1.html Cocos2d

cocos2d-x 3.0 final 移植 android

filename details blank each 連接 python 頭文件 osd 需求 準備工作 你僅僅要依照上一篇的 cocos2d-x 3.0 final 環境搭建 完畢就能夠了 1.編輯proj.android\jni\Android.mk,更改內

Cocos2d-X研究之3.0 場景切換特效匯總

dsm 上下 ble onf color mon 逆時針 radi 下場 ?? cocos2d-x 3.0中場景切換特效比較多。並且遊戲開發中也常常須要用到這些特效。來使場景切換時不至於那麽幹巴,遂這裏匯總一下,開發中使用。 場景切換用到導演類Directory,大多數