内容简介:2019 年 6 月 28 日,TiDB 发布 3.0 GA 版本,对应的 TiDB Ansible 版本为 3.0.0。相比于 V2.1,V3.0.0 版本在以下方面有重要改进:官网链接:
Overview
2019 年 6 月 28 日,TiDB 发布 3.0 GA 版本,对应的 TiDB Ansible 版本为 3.0.0。
相比于 V2.1,V3.0.0 版本在以下方面有重要改进:
- 稳定性方面,显著提升了大规模集群的稳定性,集群支持 150+ 存储节点,300+ TB 存储容量长期稳定运行。
- 易用性方面有显著的提升,降低用户运维成本,例如:标准化慢查询日志,制定日志文件输出规范,新增
EXPLAIN ANALYZE
,SQL Trace 功能方便排查问题等。 - 性能方面,与 2.1 相比,TPC-C 性能提升约 4.5 倍,Sysbench 性能提升 50%+。 因支持 View,TPC-H 50G Q15 可正常运行。
- 新功能方面增加了窗口函数、视图( 实验特性 )、分区表、插件系统、悲观锁( 实验特性 )、
SQL Plan Management
等特性。
TiDB
-
新功能
- 新增 Window Function,支持所有 MySQL 8.0 中的窗口函数,包括
NTILE
,LEAD
,LAG
、PERCENT_RANK
、NTH_VALUE
、CUME_DIST
、FIRST_VALUE
、LAST_VALUE
、RANK
、DENSE_RANK
、ROW_NUMBER
函数 - 新增 View 功能( 实验特性 )
-
完善 Table Partition 功能:
- Range Partition
- Hash Partition
- 新增插件系统,官方提供 IP 白名单( 企业版特性 ),审记日志( 企业版特性 )等插件
- 新增
SQL Plan Management
功能,通过绑定 SQL 执行计划确保查询的稳定性( 实验特性 )
- 新增 Window Function,支持所有 MySQL 8.0 中的窗口函数,包括
-
SQL 优化器
- 优化
NOT EXISTS
子查询,转化为 Anti Semi Join 提升性能 - 优化
Outer Join
常量传播,新增Outer Join
消除优化规则,避免无效计算,提升性能 - 优化
IN
子查询,先聚合后执行Inner Join
,提升性能 - 优化 Index Join,适应更多的场景,提升性能
- 优化 Range Partition 的 Partition Pruning 优化规则,提升性能
- 优化
_tidb_rowid
查询逻辑,避免全表扫描,提升性能 - 当过滤条件中包含相关列时,在抽取复合索引的访问条件时尽可能多地匹配索引的前缀列,提升性能
- 利用列之间的顺序相关性,提升代价估算准确度
- 基于统计信息的贪心算法及动态规划算法改进了
Join Order
,提升多表关联的执行速度 - 新增 Skyline Pruning,利用规则防止执行计划过于依赖统计信息,提升查询的稳定性
- 提升单列索引上值为 NULL 时行数估算准确度
- 新增
FAST ANALYZE
,通过在各个 Region 中随机采样避免全表扫描的方式提升统计信息收集性能 - 新增单调递增的索引列增量
Analyze
功能,提升统计信息收集性能 - 支持
DO
语句中使用子查询 - 支持在事务中使用 Index Join
- 优化
prepare
/execute
,支持不带参数的 DDL 语句 - 修改变量
stats-lease
值为 0 时系统的行为,使其自动加载统计 - 新增导出历史统计信息功能
- 新增导入导出列的关联性信息功能
- 优化
-
SQL 执行引擎
- 优化日志输出,
EXECUTE
语句输出用户变量,COMMIT
语句输出慢查询日志,方便排查问题 - 新增
EXPLAIN ANALYZE
功能,提升SQL 调优易用性 - 新增
admin show next_row_id
功能,方便获取下一行 ID - 新增
JSON_QUOTE
、JSON_ARRAY_APPEND
、JSON_MERGE_PRESERVE
、BENCHMARK
、COALESCE
、NAME_CONST
6 个内建函数 - 优化 Chunk 大小控制逻辑,根据查询上下文件动态调整,降低 SQL 执行时间和资源消耗,提升性能
- 新增
TableReader
、IndexReader
和IndexLookupReader
算子内存追踪控制 - 优化 Merge Join 算子,使其支持空的
ON
条件 - 优化单个表列较多时写入性能,提升数倍性能
- 通过支持逆序扫数据提升
admin show ddl jobs
的性能 - 新增
split table region
语句,手动分裂表的 Region,缓解热点问题 - 新增
split index region
语句,手动分裂索引的 Region 缓解热点问题 - 新增黑名单禁止下推表达式到 Coprocessor 功能
- 优化 Expensive Query 日志,在日志中打印执行时间或者使用内存超过阈值的 SQL 查询
- 优化日志输出,
-
DDL
- 支持字符集从
utf8
转换到utf8mb4
的功能 - 修改默认字符集从
utf8
变为utf8mb4
- 新增
alter schema
语句修改数据库 charset 和 collation 功能 - 新增 ALTER ALGORITHM
INPLACE
/INSTANT
功能 - 新增
SHOW CREATE VIEW
功能 - 新增
SHOW CREATE USER
功能 - 新增快速恢复误删除的表功能
- 新增动态调整
ADD INDEX
的并发数功能 - 新增 pre_split_regions 选项,在
CREATE TABLE
时预先分配 Region,缓解建表后大量写入造成的写热点问题 - 新增通过 SQL 语句指定表的索引及范围分裂 Region,缓解热点问题
- 新增
ddl_error_count_limit
全局变量,控制 DDL 任务重次数 - 新增列属性包含
AUTO_INCREMENT
时利用SHARD_ROW_ID_BITS
打散行 ID 功能,缓解热点问题 - 优化无效 DDL 元信息存活时间,使集群升级后一段时间 DDL 操作比较慢的情况变短
- 支持字符集从
-
事务
- 新增悲观事务模型( 实验特性 )
-
优化事务处理逻辑,适应更多场景,具体如下:
-
tidb_disable_txn_auto_retry
的默认值为on
,即不会重试非自动提交的事务 - 新增
tidb_batch_commit
系统变量控制将事务拆分成多个事务并发执行 - 新增
tidb_low_resolution_tso
系统变量控制批量获取tso
个数,减少事务获取tso
的次数以适应某些数据一致性要求较低的场景 - 新增
tidb_skip_isolation_level_check
变量控制事务检查隔离级别设置为 SERIALIZABLE 时是否报错 - 修改
tidb_disable_txn_auto_retry
系统变量的行为,修改为影响所有的可重试错误
-
-
权限管理
- 对 `ANALYZE`、`USE`、`SET GLOBAL`、`SHOW PROCESSLIST` 语句进行权限检查 - 新增基于角色的权限访问控制功能 (RBAC)(**实验特性**)
-
Server
-
优化慢查询日志,具体包括:
- 重构慢查询日志格式
- 优化慢查询日志内容
- 优化查询慢查询日志的方法,通过内存表
INFORMATION_SCHEMA.SLOW_QUERY
,ADMIN SHOW SLOW
语句查询慢查询日志
- 制定日志格式规范,重构日志系统,方便 工具 收集分析
- 新增 SQL 语句管理 TiDB Binlog 服务功能,包括查询状态,开启 TiDB Binlog,维护发送 TiDB Binlog 策略
- 新增通过
unix_socket
方式连接数据库 - 新增 SQL 语句
Trace
功能 - 新增
/debug/zip
HTTP 接口,获取 TiDB 实例的信息,方便排查问题 -
优化监控项,方便排查问题,如下:
high_error_rate_feedback_total
- 优化系统初始化流程,仅允许 DDL Owner 执行初始化操作,缩短初始化或升级过程中的启动时间
- 优化
kill query
语句执行逻辑,提升性能,确保资源正确释放 - 新增启动选项
config-check
检查配置文件合法性 - 新增
tidb_back_off_weight
系统变量,控制内部出错重试的退避时间 - 新增
wait_timeout
、interactive_timeout
系统变量,控制连接空闲超过变量的值,系统自动断开连接。 - 新增连接 TiKV 的连接池,减少连接创建时间
-
-
兼容性
ALLOW_INVALID_DATES SHOW CREATE DATABASE IF NOT EXISTS
PD
- 新增从单个节点重建集群的功能
- 将 Region 元信息从 etcd 移到 go-leveldb 存储引擎,解决大规模集群 etcd 存储瓶颈问题
-
API
remove-tombstone ScanRegions GetOperator GetStores
-
配置
enable-two-way-merge hot-region-schedule-limit hot-region-cache-hits-threshold store-balance-rate
-
调度器优化
waitingOperator shuffle-hot-region
-
模拟器
- 新增数据导入场景模拟
- 新增为 Store 设置不同的心跳间隔的功能
-
其他
- 升级 etcd,解决输出日志格式不一致,prevote 时选举不出 Leader,Lease 死锁等问题
- 制定日志格式规范,重构日志系统,方便工具收集分析
- 新增调度参数,集群 Label 信息,PD 处理 TSO 请求的耗时,Store ID 与地址信息等监控指标
TiKV
- 新增分布式 GC 以及并行 Resolve Lock 功能,提升 GC 的性能
- 新增逆向
raw_scan
和raw_batch_scan
功能 - 新增多线程 Raftstore 和 Apply 功能,提升单节点内可扩展性,提升单节点内并发处理能力,提升单节点的资源利用率,降低延时,同等压力情况下性能提升 70%
- 新增批量接收和发送 Raft 消息功能,写入密集的场景 TPS 提升 7%
- 新增 Apply snapshot 之前检查 RocksDB level 0 文件的优化,避免产生 Write stall
- 新增 Titan 存储引擎插件,提升 Value 超过 1KiB 时系统的性能,一定程度上缓解写放大问题( 实验特性 )
- 新增悲观事务模型( 实验特性 )
- 新增通过 HTTP 方式获取监控信息功能
- 修改 Insert 语义,仅在 Key 不存在的时候 Prewrite 才成功
- 制定日志格式规范,重构日志系统,方便工具收集分析
- 新增配置信息,Key 越界相关的性能监控指标
- RawKV 使用 Local Reader,提升性能
-
Engine
Iterator Key Bound Option
-
Server
batch commands
-
RaftStore
- 新增 hibernate Regions 功能,优化 RaftStore CPU 的消耗( 实验特性 )
- 删除 local reader 线程
-
Coprocessor
EXPLAIN ANALYZE
Tools
-
TiDB Lightning
TiKV-Importer TiKV-Importer
-
TiDB Binlog
advertise-addr
-
sync-diff-inspector
- 新增 checkpoint 功能,支持从断点继续校验的功能
- 新增 only-use-checksum 配置项,控制仅通过计算 checksum 校验数据的一致性
- 新增采用 TiDB 统计信息以及使用多个 Column 划分 Chunk 的功能,适应更多的场景
TiDB Ansible
-
升级监控组件版本到安全的版本
- Prometheus 从 2.2.1 升级到 2.8.1 版本
- Pushgateway 从 0.4.0 升级到 0.7.0 版本
- Node_exporter 从 0.15.2 升级到 0.17.0 版本
- Alertmanager 从 0.14.0 升级到 0.17.0 版本
- Grafana 从 4.6.3 升级到 6.1.6 版本
- Ansible 从 2.5.14 升级到 2.7.11 版本
- 新增 TiKV summary 监控面板,方便查看集群状态
- 新增 TiKV trouble_shooting 监控面板,删除重复项,方便排查问题
- 新增 TiKV details 监控面板,方便调试排查问题
- 新增滚动升级并发检测版本是否一致功能,提升滚动升级性能
- 新增 lightning 部署运维功能
- 优化
table-regions.py
脚本,新增按表显示 leader 分布功能 - 优化 TiDB 监控,新增以 SQL 类别显示延迟的监控项
- 修改操作系统版本限制,仅支持 CentOS 7.0 及以上,Red Hat 7.0 及以上版本的操作系统
- 新增预测集群最大 QPS 的监控项,默认隐藏
官网链接: https://www.pingcap.com/index.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Algorithms
Magnus Lie Hetland / Apress / 2010-11-24 / USD 49.99
Python Algorithms explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it......一起来看看 《Python Algorithms》 这本书的介绍吧!