资讯专栏INFORMATION COLUMN

TiDB 3.0 Beta Release Notes

goji / 695人阅读

摘要:年月日,发布版,对应的。相比版本,该版本对系统稳定性优化器统计信息以及执行引擎做了很多改进。新特性支持支持支持支持优化器重新支持聚合消除的优化规则优化子查询,将其转化为添加变量以支持新的优化器。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17879.html

相关文章

  • TiDB 3.0.0 Beta.1 Release Notes

    摘要:年月日,发布版,对应的版本为。相比版本,该版本对系统稳定性易用性功能优化器统计信息以及执行引擎做了很多改进。 2019 年 03 月 26 日,TiDB 发布 3.0.0 Beta.1 版,对应的 TiDB-Ansible 版本为 3.0.0 Beta。相比 3.0.0 Beta 版本,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎做了很多改进。 TiDB SQL ...

    Worktile 评论0 收藏0

发表评论

0条评论

goji

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<