TiDB 2.1 GA Release Notes - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PingCAP
V2EX    问与答

TiDB 2.1 GA Release Notes

  •  2
     
  •   PingCAP 2018-11-30 19:44:16 +08:00 1433 次点击
    这是一个创建于 2583 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2018 年 11 月 30 日,TiDB 发布 2.1 GA 版。相比 2.0 版本,该版本对系统稳定性、性能、兼容性、易用性做了大量改进。

    TiDB

    SQL 优化器

    • 优化 Index Join 选择范围,提升执行性能
    • 优化 Index Join 外表选择,使用估算的行数较少的表作为外表
    • 扩大 Join Hint TIDB_SMJ 的作用范围,在没有合适索引可用的情况下也可使用 Merge Join
    • 加强 Join Hint TIDB_INLJ 的能力,可以指定 Join 中的内表
    • 优化关联子查询,包括下推 Filter 和扩大索引选择范围,部分查询的效率有数量级的提升
    • 支持在 UPDATEDELETE 语句中使用 Index Hint 和 Join Hint
    • 支持更多函数下推:ABS/CEIL/FLOOR/IS TRUE/IS FALSE
    • 优化内建函数 IFIFNULL 的常量折叠算法
    • 优化 EXPLAIN 语句输出格式, 使用层级结构表示算子之间的上下游关系

    SQL 执行引擎

    • 重构所有聚合函数,提升 StreamHash 聚合算子的执行效率
    • 实现并行 Hash Aggregate 算子,部分场景下有 350% 的性能提升
    • 实现并行 Project 算子,部分场景有 74% 的性能提升
    • 并发地读取 Hash JoinInner 表和 Outer 表的数据,提升执行性能
    • 优化 REPLACE INTO 语句的执行速度,性能提升 10x
    • 优化时间类型的内存占用,时间类型数据的内存使用降低为原来的一半
    • 优化点查的查询性能, Sysbench 点查效率提升 60%
    • TiDB 插入和更新宽表,性能提升接近 20 倍
    • 支持在配置文件中设置单个查询的内存使用上限
    • 优化 Hash Join 的执行过程,当 Join 类型为 Inner Join 或者 Semi Join 时,如果内表为空,不再读取外表数据,快速返回结果
    • 支持 EXPLAIN ANALYZE 语句,用于查看 Query 执行过程中各个算子的运行时间,返回结果行数等运行时统计信息

    统计信息

    • 支持只在一天中的某个时间段开启统计信息自动 ANALYZE 的功能

    • 支持根据查询的反馈自动更新表的统计信息

    • 支持通过 ANALYZE TABLE WITH BUCKETS 语句配置直方图中桶的个数

    • 优化等值查询和范围查询混合的情况下使用直方图估算 Row Count 的算法

    表达式

    • 支持内建函数:
      • json_contains
      • json_contains_path
      • encode/decode

    Server

    DDL

    • 支持 Add Index 语句与其他 DDL 语句并行执行,避免耗时的 Add Index 操作阻塞其他操作
    • 优化 Add Index 的速度,在某些场景下速度大幅提升
    • 支持 select tidb_is_ddl_owner() 语句,方便判断 TiDB 是否为 DDL Owner
    • 支持 ALTER TABLE FORCE 语法
    • 支持 ALTER TABLE RENAME KEY TO 语法
    • Admin Show DDL Jobs 输出结果中添加表名、库名等信息
    • 支持使用 ddl/owner/resign HTTP 接口释放 DDL Owner 并开启新一轮 DDL Owner 选举

    兼容性

    • 支持更多 MySQL 语法
    • BIT 聚合函数支持 ALL 参数
    • 支持 SHOW PRIVILEGES 语句
    • 支持 LOAD DATA 语句的 CHARACTER SET 语法
    • 支持 CREATE USER 语句的 IDENTIFIED WITH 语法
    • 支持 LOAD DATA IGNORE LINES 语句
    • Show ProcessList 语句返回更准确信息

    PD

    可用性优化

    • 引入 TiKV 版本控制机制,支持集群滚动兼容升级
    • PD 节点间 开启 Raft PreVote,避免网络隔离后恢复时产生的重新选举
    • 开启 raft learner 功能,降低调度时出现宕机导致数据不可用的风险
    • TSO 分配不再受系统时间回退影响
    • 支持 Region merge 功能,减少元数据带来的开销

    调度器优化

    • 优化 Down Store 的处理流程,加快发生宕机后补副本的速度
    • 优化热点调度器,在流量统计信息抖动时适应性更好
    • 优化 Coordinator 的启动,减少重启 PD 时带来的不必要调度
    • 优化 Balance Scheduler 频繁调度小 Region 的问题
    • 优化 Region merge,调度时考虑 Region 中数据的行数
    • 新增一些控制调度策略的开关
    • 完善调度模拟器,添加调度场景模拟

    API 及运维工具

    监控

    • 增加 Filter相关的监控
    • 新增 etcd Raft 状态机相关监控

    性能优化

    • 优化处理 Region heartbeat 的性能,减少 heartbeat 带来的内存开销
    • 优化 Region tree 性能
    • 优化计算热点统计的性能问题

    TiKV

    Coprocessor

    Transaction

    Raftstore

    存储引擎

    • 修复 RocksDB CompactFiles 的 bug,可能影响 Lightning 导入的数据
    • 升级 RocksDB 到 v5.15 ,解决 snapshot 文件可能会被写坏的问题
    • 优化 IngestExternalFile,避免 flush 卡住写入的问题

    tikv-ctl

    Tools

    升级兼容性说明

    • 由于新版本存储引擎更新,不支持在升级后回退至 2.0.x 或更旧版本
    • 新版本默认开启 raft learner 功能,如果从 1.x 版本集群升级至 2.1 版本,须停机升级或者先滚动升级 TiKV,完成后再滚动升级 PD
    • 从 2.0.6 之前的版本升级到 2.1.0 之前,最好确认集群中是否存在正在运行中的 DDL 操作,特别是耗时的 Add Index 操作
    • 因为 2.1 版本启用了并行 DDL,对于早于 2.0.1 版本的集群,无法滚动升级到 2.1,可以选择下面两种方案:
      • 停机升级,直接从早于 2.0.1 的 TiDB 版本升级到 2.1
      • 先滚动升级到 2.0.1 或者之后的 2.0.x 版本,再滚动升级到 2.1 版本
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1279 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:14 PVG 01:14 LAX 09:14 JFK 12:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86