文档章节

TiDB 3.0 Beta Release Notes

TiDB
 TiDB
发布于 01/21 11:55
字数 1401
阅读 29
收藏 0

2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。

TiDB

  • 新特性
    • 支持 View
    • 支持 Window Function
    • 支持 Range Partition
    • 支持 Hash Partition
  • SQL 优化器
    • 重新支持聚合消除的优化规则
    • 优化 NOT EXISTS 子查询,将其转化为 Anti Semi Join
    • 添加 tidb_enable_cascades_planner 变量以支持新的 Cascades 优化器。目前 Cascades 优化器尚未实现完全,默认关闭
    • 支持在事务中使用 Index Join
    • 优化 Outer Join 上的常量传播,使得对 Join 结果里和 Outer 表相关的过滤条件能够下推过 Outer Join 到 Outer 表上,减少 Outer Join 的无用计算量,提升执行性能
    • 调整投影消除的优化规则到聚合消除之后,消除掉冗余的 Project 算子
    • 优化 IFNULL 函数,当输入参数具有非 NULL 的属性的时候,消除该函数
    • 支持对 _tidb_rowid 构造查询的 Range,避免全表扫,减轻集群压力
    • 优化 IN 子查询为先聚合后做 Inner Join 并,添加变量 tidb_opt_insubq_to_join_and_agg 以控制是否开启该优化规则并默认打开
    • 支持在 DO 语句中使用子查询
    • 添加 Outer Join 消除的优化规则,减少不必要的扫表和 Join 操作,提升执行性能
    • 修改 TIDB_INLJ 优化器 Hint 的行为,优化器将使用 Hint 中指定的表当做 Index Join 的 Inner 表
    • 更大范围的启用 PointGet,使得当 Prepare 语句的执行计划缓存生效时也能利用上它
    • 引入贪心的 Join Reorder 算法,优化多表 Join 时 Join 顺序选择的问题
    • 支持 View
    • 支持 Window Function
    • TIDB_INLJ 未生效时,返回 warning 给客户端,增强易用性
    • 支持根据过滤条件和表的统计信息推导过滤后数据的统计信息的功能
    • 增强 Range Partition 的 Partition Pruning 优化规则
  • SQL 执行引擎
    • 优化 Merge Join 算子,使其支持空的 ON 条件
    • 优化日志,打印执行 EXECUTE 语句时使用的用户变量
    • 优化日志,为 COMMIT 语句打印慢查询信息
    • 支持 EXPLAIN ANALYZE 功能,使得 SQL 调优过程更加简单
    • 优化列很多的宽表的写入性能
    • 支持 admin show next_row_id
    • 添加变量 tidb_init_chunk_size 以控制执行引擎使用的初始 Chunk 大小
    • 完善 shard_row_id_bits,对自增 ID 做越界检查
  • Prepare 语句
    • 对包含子查询的 Prepare 语句,禁止其添加到 Prepare 语句的执行计划缓存中,确保输入不同的用户变量时执行计划的正确性
    • 优化 Prepare 语句的执行计划缓存,使得当语句中包含非确定性函数的时候,该语句的执行计划也能被缓存
    • 优化 Prepare 语句的执行计划缓存,使得 DELETE/UPDATE/INSERT 的执行计划也能被缓存
    • 优化 Prepare 语句的执行计划缓存,当执行 DEALLOCATE 语句时从缓存中剔除对应的执行计划
    • 优化 Prepare 语句的执行计划缓存,通过控制其内存使用以避免缓存过多执行计划导致 TiDB OOM 的问题
    • 优化 Prepare 语句,使得 ORDER BY/GROUP BY/LIMIT 子句中可以使用 “?” 占位符
  • 权限管理
    • 增加对 ANALYZE 语句的权限检查
    • 增加对 USE 语句的权限检查
    • 增加对 SET GLOBAL 语句的权限检查
    • 增加对 SHOW PROCESSLIST 语句的权限检查
  • Server
    • 支持了对 SQL 语句的 Trace 功能
    • 支持了插件框架
    • 支持同时使用 unix_socket 和 TCP 两种方式连接数据库
    • 支持了系统变量 interactive_timeout
    • 支持了系统变量 wait_timeout
    • 提供了变量 tidb_batch_commit,可以按语句数将事务分解为多个事务
    • 支持 ADMIN SHOW SLOW 语句,方便查看慢日志
  • 兼容性
    • 支持了 ALLOW_INVALID_DATES 这种 SQL mode
    • 提升了 load data 对 CSV 文件的容错能力
    • 支持了 MySQL 320 握手协议
    • 支持将 unsigned bigint 列声明为自增列
    • 支持 SHOW CREATE DATABASE IF NOT EXISTS 语法
    • 当过滤条件中包含用户变量时不对其进行谓词下推的操作,更加兼容 MySQL 中使用用户变量模拟 Window Function 的行为
  • DDL
    • 支持快速恢复误删除的表
    • 支持动态调整 ADD INDEX 的并发数
    • 支持更改表或者列的字符集到 utf8/utf8mb4
    • 默认字符集从 utf8 变为 utf8mb4
    • 支持 RANGE PARTITION

Tools

  • TiDB-Lightning
    • 大幅优化 SQL 转 KV 的处理速度
    • 对单表支持 batch 导入,提高导入性能和稳定性

PD

  • 增加 RegionStorage 单独存储 Region 元信息
  • 增加 shuffle hot region 调度
  • 增加调度参数相关 Metrics
  • 增加集群 Label 信息相关 Metrics
  • 增加导入数据场景模拟
  • 修复 Leader 选举相关的 Watch 问题

TiKV

  • 支持了分布式 GC
  • 在 Apply snapshot 之前检查 RocksDB level 0 文件,避免产生 Write stall
  • 支持了逆向 raw_scanraw_batch_scan
  • 更好的夏令时支持
  • 支持了使用 HTTP 方式获取监控信息
  • 支持批量方式接收和发送 Raft 消息
  • 引入了新的存储引擎 Titan
  • 升级 gRPC 到 v1.17.2
  • 支持批量方式接收客户端请求和发送回复
  • 多线程 Apply
  • 线程 Raftstore

英文版 Release Notes https://github.com/pingcap/docs/blob/master/releases/3.0beta.md

© 著作权归作者所有

共有 人打赏支持
TiDB
粉丝 136
博文 153
码字总数 410423
作品 3
海淀
私信 提问
重磅更新 开源分布式 NewSQL 数据库 TiDB 1.0 正式发布

10 月 16 日,TiDB 正式发布 GA 版(TiDB 1.0)。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。 作为世界级开源的分布式关系型数据库,TiDB 灵感来自于 Google Spa...

bhzhu203
2017/10/16
8K
43
TiDB 2.1 GA Release Notes

2018 年 11 月 30 日,TiDB 发布 2.1 GA 版。相比 2.0 版本,该版本对系统稳定性、性能、兼容性、易用性做了大量改进。 TiDB SQL 优化器 优化 选择范围,提升执行性能 优化 外表选择,使用估...

TiDB
2018/11/30
0
0
TiDB 源码阅读系列文章(二十)Table Partition

作者:肖亮亮 Table Partition 什么是 Table Partition Table Partition 是指根据一定规则,将数据库中的一张表分解成多个更小的容易管理的部分。从逻辑上看只有一张表,但是底层却是由多个物...

TiDB
2018/10/29
0
0
TiDB Beta 版发布,分布式 SQL 数据库

新型分布式 NewSQL 数据库 TiDB 今日正式发布 Beta 版本。 TiDB 是数据库领域的顶级开源项目,致力于完美实现弹性伸缩,支持 SQL 语句,ACID 事务一致性和真正的高可用性等分布式关系型数据库...

oschina
2016/07/01
3.1K
9
TiDB 社区成长足迹与小红花 | TiDB DevCon 2019

2018 年 TiDB 产品变得更加成熟和稳定,同时 TiDB 社区力量也在发展壮大。在 TiDB DevCon 2019 上,我司联合创始人崔秋带大家一起回顾了 2018 年 TiDB 社区成长足迹,在社区荣誉时刻环节,我...

TiDB
前天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

RabbitMQ入门

RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间...

watermelon11
今天
15
0
今天的学习

自动加载:方法一 function __autoload( $className ){在这里,完成加载B这个类文件的工作。}class A{} //这是一个类$a1 = new A(); //这里没有自动加载的发生,因为A这个类...

墨冥
今天
2
0
印刷工艺步骤

印刷厂从收到订单到交付整个流程,一般涉及到以下步骤 1.设计(经过软件如cdr,psd,ai等等设计需要印刷的名片,宣传单,画册等物料); 2.排版拼版(在电脑软件这区域完成); 3.出版、出硫...

focusone
昨天
4
0
virtualbox中安装ubuntu

virtualbox+ubuntu 安装virtualbox,当前版本是6.0.4 下载ubuntu安装盘,建议lubuntu,链接是http://mirrors.ustc.edu.cn/ubuntu-cdimage/lubuntu/releases/18.04.2/release/lubuntu-18.04.......

chuqq
昨天
5
0
exists 谓词的子查询

https://blog.csdn.net/qq_19782019/article/details/78730882

仟昭
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部