当前位置: 首页 > news >正文

TiDB 3.0 Beta Release Notes

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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://my.oschina.net/zhaiyuan/blog/3003973

相关文章:

  • 台湾屏东县一肉鸭场检验出禽流感 扑杀6510只肉鸭
  • 山西球迷大范围辱骂裁判被CBA公司罚款2万元
  • 从前后端分离到GraphQL,携程如何用Node实现?\n
  • Python数据结构和算法学习笔记1
  • 北京因地制宜编制村庄规划 着重体现京韵农味
  • TCPIP网络协议层对应的RFC文档
  • 英格兰功勋老将或赛季后退役:身体已吃不消
  • android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)
  • Spring boot 集成Spring Security
  • Java 异常表与异常处理原理
  • 中国最高法、全国工商联联合发文促商会调解发挥作用
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 《程序是怎样跑起来的》第三章读后感
  • 加密与安全部分 实验及知识点
  • java springboot b2b2c shop 多用户商城系统源码-(七)高可用的分布式配置中心(Spring Cloud Config)...
  • 2017届校招提前批面试回顾
  • Angular2开发踩坑系列-生产环境编译
  • CentOS6 编译安装 redis-3.2.3
  • JavaScript异步流程控制的前世今生
  • Java程序员幽默爆笑锦集
  • Js基础知识(四) - js运行原理与机制
  • LeetCode29.两数相除 JavaScript
  • overflow: hidden IE7无效
  • Python - 闭包Closure
  • Service Worker
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 理解在java “”i=i++;”所发生的事情
  • 免费小说阅读小程序
  • 配置 PM2 实现代码自动发布
  • 前端_面试
  • 时间复杂度与空间复杂度分析
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Swoole加速Laravel(正式环境中)
  • 手写一个CommonJS打包工具(一)
  • elasticsearch-head插件安装
  • # centos7下FFmpeg环境部署记录
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.proxy和$.extend
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (39)STM32——FLASH闪存
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (三) diretfbrc详解
  • (转)Windows2003安全设置/维护
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 4.0中的泛型协变和反变
  • .NET Core 成都线下面基会拉开序幕
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net中调用windows performance记录性能信息
  • .php文件都打不开,打不开php文件怎么办
  • /proc/stat文件详解(翻译)