TiDB 3.0.0

Easter79
• 阅读 773

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

TiDB

  • SQL 优化器

    • 利用列之间的顺序相关性提升代价估算准确度,并提供启发式参数 tidb_opt_correlation_exp_factor 用于控制在相关性无法被直接用于估算的场景下对索引扫描的偏好程度。
    • 当过滤条件中包含相关列时,在抽取复合索引的访问条件时尽可能多地匹配索引的前缀列。
    • 用动态规划决定连接的执行顺序,当参与连接的表数量不多于 tidb_opt_join_reorder_threshold 时启用。
    • 在构造 Index Join 的的内表中,以复合索引作为访问条件时,尽可能多地匹配索引的前缀列。
    • 提升对单列索引上值为 NULL 的行数估算准确度。
    • 在逻辑优化阶段消除聚合函数时特殊处理 GROUP_CONCAT ,防止产生错误的执行结果。
    • 当过滤条件为常量时,正确地将它下推到连接算子的子节点上。
    • 在逻辑优化阶段列剪裁时特殊处理一些函数,例如 RAND() ,防止产生和 MySQL 不兼容的执行结果。
    • 支持 FAST ANALYZE,通过tidb_enable_fast_analyze 变量控制。该特性通过用对 Region 进行采样取代扫描整个 region 的方式加速统计信息收集。
    • 支持 SQL PLAN MANAGEMENT。该特性通过对 SQL 进行执行计划绑定,以确保执行稳定性。该特性目前处于测试阶段,仅支持对 SELECT 语句使用绑定的执行计划,不建议在生产场景中直接使用。
  • 执行引擎

    • 支持对 TableReaderIndexReaderIndexLookupReader 算子进行内存追踪控制。
    • 在慢日志中展示更多 COPROCESSOR 端执行任务相关细节。如 COPROCESSOR 任务数,平均/最长/90% 执行/等待时间,执行/等待时间最长的 TiKV 地址等。
    • 支持 PREPARE 不含占位符的 DDL 语句。
  • Server

    • TiDB 启动时,只允许 DDL owner 执行 bootstrap

    • 新增 tidb_skip_isolation_level_check 变量控制检查隔离级别设置为 SERIALIZABLE 时不报错

    • 在慢日志中,将隐式提交的时间与 SQL 执行时间融合在一起

    • RBAC 权限管理

      • 支持 SHOW GRANT
      • 支持 SET DEFAULT ROLE
      • 支持 GRANT ROLE
    • 修正了插件退出时导致 TiDB 退出的问题

    • 修正只读语句被错误地放到事务历史中的问题

    • kill 语句可以更快的结束 SQL 的执行,并快速释放资源

    • 增加启动选项 config-check 来检查配置文件的合法性

    • 修正非严格模式下对于写入 NULL 字段的合法性检查

  • DDL

    • 为 CREATE TABLE 添加了 pre_split_regions 选项,该选项可以在建表时预先分配 Table Region,避免建表后大量写入造成的写热点
    • 优化了部分 DDL 语句的执行性能
    • FULLTEXT KEY 新增不支持全文索引的 warning
    • 修正了旧版本 TiDB 中,UTF8 和 UTF8MB4 编码的兼容性问题
    • 修正了一个表的 shard_row_id_bits 的潜在 BUG
    • 修正了 ALTER TABLE Charset 后,Column Charset 不会跟随变化的 BUG
    • 修正了使用 BINARY/BIT 作为 Column Default Value 时,SHOW COLUMN 可能出错的 BUG
    • 修正了 SHOW FULL COLUMNS 语句中,CHARSET / COLLATION 显示的兼容性问题
    • 现在 SHOW COLLATIONS 语句只会列出 TiDB 所实际支持的 COLLATIONS

PD

  • 升级 ETCD 版本

    • 统一 etcd 的日志格式与 pd server 一致
    • 修复 prevote 可能无法选出 Leader 的问题
    • 快速 drop 掉会失败的 propose 和 read 请求,减少阻塞后面的请求时间
    • 修复 Lease 的死锁问题
  • 修复 store 读热点的 keys 统计不正确问题

  • 支持从单一 PD 节点强制重建 PD 集群

  • 修复 Scatter Region 产生无效 Operator Step 的问题

  • 修复 Region Merge Operator 超时时间过短的问题

  • 热点调度使用高优先级

  • 添加 PD server 端处理 TSO 请求的耗时 Metrics

  • 添加相对应的 Store ID 和 Address 到 store 相关的 Metrics

  • 支持 GetOperator 服务

  • 修复 Heartbeat stream 下发送 error 找不到 store 的问题

TiKV

  • Engine
    • 修复读流量统计不准确问题
    • 修复 prefix extractor panic 的问题
    • 优化内存管理,减少 Iterator Key Bound Option 的内存分配和拷贝
    • 修复 Merge Region 时未考虑 Learner log gap 造成的 panic 问题
    • 支持不同的 column families 共享 block cache
  • Server
    • 减少 batch commands 的上下文切换开销
    • 检查 seek iterator status 的合法性
  • RaftStore
    • 可配置化 properties index distance
  • Coprocessor
    • 新增 batch index scan executor
    • 新增向量化 evaluation 框架
    • 新增 batch 执行器统计框架
    • 构建 RPN expression 时检查 max column 以防止 evaluation 阶段 column offset 越界的问题
    • 实现 BatchLimitExecutor
    • ReadPool 使用 tokio-threadpool 替换原本的 futures-cpupool,减少 context switch
    • 新增 batch 聚合框架
    • 新增 BatchSelectionExecutor
    • 实现 batch aggression function AVG
    • 实现 RPN function LogicalAnd
  • Misc
    • 支持选用 tcmalloc 为内存分配器

Tools

  • TiDB-Binlog
    • 修复 unsigned int 类型的主键列的 binlog 数据为负数,造成同步出错中断的问题
    • 删除下游是 pb 时的压缩选项,修改下游名字 pb 成 file
    • Pump 新增 storage.sync-log 配置项,支持 Pump 本地存储异步刷盘
    • Pump 和 Drainer 之间通讯支持流量压缩
    • Drainer 新增 syncer.sql-mode 配置项,支持使用不同 sql-mode 解析 DDL query
    • Drainer 新增 syncer.ignore-table 配置项,支持过滤不需要同步的表
  • Lightning
    • 使用 row id 或者列的默认值填充 dump 文件中缺少的 column 数据
    • Importer 修复部分 SST 导入失败依然返回导入成功的 bug
    • Importer 支持 upload SST 到 TiKV 限速
    • Lightning 优化导入表的顺序,按照表的数据大小顺序进行导入,减少导入过程中大表执行 checksum 和 Analyze 对集群的影响,并且提高 Checksum 和 Analyze 的成功率
    • 提升 Lightning encode SQL 性能,性能提升 50%,直接解析数据源文件内容成 TiDB 的 types.Datum,省去 KV encoder 的多余解析工作
    • 日志格式改为 Unified Log Format
    • 新增一些命令行选项,即使缺少配置文件也能使用
  • 数据同步对比工具 (sync-diff-inspector)
    • 支持 checkpoint,记录校验状态,重启后从上次进度继续校验
    • 增加配置项 only-use-checksum,只通过计算 checksum 来检查数据是否一致

TiDB-Ansible

  • TiKV 监控变更以及更新 Ansible、Grafana、Prometheus 版本

    • summary 监控适用于用户查看集群状态
    • trouble_shooting 监控适用于 DBA 排查问题
    • details 监控适用于开发分析问题
  • 修复下载 Kafka 版本 Binlog 失败的 BUG

  • 修改操作系统版本限制,仅支持 CentOS 7.0 及以上,Red Hat 7.0 及以上版本的操作系统

  • 滚动升级时的版本检测改为多并发

  • 更新 README 中文档链接

  • 移除重复的 TiKV 监控项,新增 trouble shooting 监控项

  • 优化 table-regions.py 脚本,按表显示 leader 分布

  • 更新 drainer 配置文件

  • 优化 TiDB 监控,新增以 SQL 类别显示延迟的监控项

  • 更新 Lightning 配置文件,新增 tidb_lightning_ctl 脚本

TiDB 3.0.0

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
TiDB Pre
8月30日,TiDB发布PreGA版。该版本对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。TiDB:SQL查询优化器调整代价模型优化索引选择,支持不同类型字段比较的索引选择支持基于贪心算法的JoinReorder
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
3年前
TiDB 2.0 RC1 Release
2018年3月9日,TiDB发布2.0RC1版。该版本在上一版的基础上,对MySQL兼容性、系统稳定性和优化器做了很多改进。TiDB支持限制单条SQL语句使用内存的大小,减少程序OOM风险支持下推流式聚合算子到TiKV支持配置文件的合法性检测
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Easter79 Easter79
3年前
TiDB 1.1 Alpha Release
2018年1月19日,TiDB发布1.1Alpha版。该版本对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。TiDBSQLparser兼容更多语法SQL查询优化器统计信息减小内存占用优化统计信息启动时载入的时间
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k