- 关于 TiDB
- 快速上手
- 部署标准集群
- 数据迁移
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 系统调优
- 软件调优
- SQL 性能调优
- SQL 性能调优概览
- 理解 TiDB 执行计划
- SQL 优化流程
- 控制执行计划
- 教程
- TiDB 工具
- 功能概览
- 适用场景
- 工具下载
- TiUP
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- sync-diff-inspector
- TiSpark
- 参考指南
- 架构
- 监控指标
- 安全加固
- 权限
- SQL
- SQL 语言结构和语法
- SQL 语句
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
BEGIN
CHANGE COLUMN
CHANGE DRAINER
CHANGE PUMP
COMMIT
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW [BACKUPS|RESTORES]
SHOW ANALYZE STATUS
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- 数据类型
- 函数与操作符
- 聚簇索引
- 约束
- 生成列
- SQL 模式
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 字符集和排序规则
- 系统表
mysql
- INFORMATION_SCHEMA
- Overview
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PROCESSLIST
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- CLI
- 命令行参数
- 配置文件参数
- 系统变量
- 存储引擎
- 遥测
- 错误码
- 通过拓扑 label 进行副本调度
- 常见问题解答 (FAQ)
- 版本发布历史
- 发布版本汇总
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- 术语表
TiDB 3.0 GA Release Notes
发版日期:2019 年 6 月 28 日
TiDB 版本:3.0.0
TiDB Ansible 版本:3.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 性能提升约 1.5 倍。因支持 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
监控项,监控真实数据量与统计信息估算数据量之间的差距 - 新增 Database 维度的 QPS 监控项
- 新增
- 优化系统初始化流程,仅允许 DDL Owner 执行初始化操作,缩短初始化或升级过程中的启动时间
- 优化
kill query
语句执行逻辑,提升性能,确保资源正确释放 - 新增启动选项
config-check
检查配置文件合法性 - 新增
tidb_back_off_weight
系统变量,控制内部出错重试的退避时间 - 新增
wait_timeout
、interactive_timeout
系统变量,控制连接空闲超过变量的值,系统自动断开连接。 - 新增连接 TiKV 的连接池,减少连接创建时间
- 优化慢查询日志,具体包括:
- 兼容性
- 支持
ALLOW_INVALID_DATES
SQL mode - 支持 MySQL 320 握手协议
- 支持将 unsigned bigint 列声明为自增列
- 支持
SHOW CREATE DATABASE IF NOT EXISTS
语法 - 优化 load data 对 CSV 文件的容错
- 过滤条件中包含用户变量时谓词不下推,兼容 MySQL Window Function 中使用用户变量行为
- 支持
PD
- 新增从单个节点重建集群的功能
- 将 Region 元信息从 etcd 移到 go-leveldb 存储引擎,解决大规模集群 etcd 存储瓶颈问题
- API
- 新增
remove-tombstone
接口,用于清理 Tombstone Store - 新增
ScanRegions
接口,用于批量查询 Region 信息 - 新增
GetOperator
接口,用于查询运行中的 Operator - 优化
GetStores
接口的性能
- 新增
- 配置
- 优化配置检查逻辑,防止配置项错误
- 新增
enable-two-way-merge
,用于控制 Region merge 的方向 - 新增
hot-region-schedule-limit
,用于控制热点 Region 调度速度 - 新增
hot-region-cache-hits-threshold
,连续命中阀值用于判断热点 - 新增
store-balance-rate
配置,用于控制每分钟产生 balance Region Operator 数量的上限
- 调度器优化
- 添加 Store Limit 机制限制调度速度,使得速度限制适用于不同规模的集群
- 添加
waitingOperator
队列,用于优化不同调度器之间资源竞争的问题 - 支持调度限速功能,主动向 TiKV 下发调度操作,限制单节点同时执行调度任务的个数,提升调度速度
- Region Scatter 调度不再受 limit 机制限制,提升调度的速度
- 新增
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
的内存分配和拷贝,提升性能 - 支持多个 column family 共享 block cache,提升资源的利用率
- 优化内存管理,减少
- Server
- 优化
batch commands
的上下文切换开销,提升性能 - 删除 txn scheduler
- 新增 read index,GC worker 相关监控项
- 优化
- RaftStore
- 新增 hibernate Regions 功能,优化 RaftStore CPU 的消耗(实验特性)
- 删除 local reader 线程
- Coprocessor
- 重构计算框架,实现向量化算子、向量化表达式计算、向量化聚合,提升性能
- 支持为 TiDB
EXPLAIN ANALYZE
语句提供算子执行详情 - 改用 work-stealing 线程池模型,减少上下文切换
Tools
- TiDB Lightning
- 支持数据表重定向同步功能
- 新增导入 CSV 文件功能
- 提升 SQL 转 KV 对的性能
- 单表支持批量导入功能,提升单表导入的性能
- 支持将大表的数据和索引分别导入,提升
TiKV-Importer
导入数据性能 - 支持对新增文件中缺少 Column 数据时使用 row id 或者列的默认值填充缺少的 column 数据
TiKV-Importer
支持对 upload SST 到 TiKV 限速功能
- TiDB Binlog
- Drainer 新增
advertise-addr
配置,支持容器环境中使用桥接模式 - Pump 使用 TiKV GetMvccByKey 接口加快事务状态查询
- 新增组件之间通讯数据压缩功能,减少网络资源消耗
- 新增 Arbiter 工具支持从 Kafka 读取 binlog 并同步到 MySQL 功能
- Reparo 支持过滤不需要被同步的文件的功能
- 新增同步 Generated column 功能
- 新增 syncer.sql-mode 配置项,支持采用不同的 SQL mode 解析 DDL
- 新增 syncer.ignore-table 配置项,过滤不需要被同步的表
- Drainer 新增
- 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 的监控项,默认隐藏
文档内容是否有帮助?