Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
221 lines (201 sloc) 13.8 KB
title category
TiDB 3.0 GA Release Notes
Releases

TiDB 3.0 GA Release Notes

发版日期:2019 年 6 月 28 日

TiDB 版本:3.0.0

TiDB Ansible 版本:3.0.0

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 性能提升约 1.5 倍。因支持 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 的监控项,默认隐藏
You can’t perform that action at this time.