- 关于 TiDB
- 快速上手
- 应用开发
- 概览
- 快速开始
- 示例程序
- 连接到 TiDB
- 数据库模式设计
- 数据写入
- 数据读取
- 事务
- 优化 SQL 性能
- 故障诊断
- 引用文档
- 云原生开发环境
- 部署标准集群
- 数据迁移
- 运维操作
- 监控与告警
- 故障诊断
- 性能调优
- 优化手册
- 配置调优
- SQL 性能调优
- SQL 性能调优概览
- 理解 TiDB 执行计划
- SQL 优化流程
- 控制执行计划
- 教程
- 同城多中心部署
- 两地三中心部署
- 同城两中心部署
- 读取历史数据
- 使用 Stale Read 功能读取历史数据(推荐)
- 使用系统变量
tidb_snapshot
读取历史数据
- 最佳实践
- Placement Rules 使用文档
- Load Base Split 使用文档
- Store Limit 使用文档
- TiDB 工具
- 功能概览
- 适用场景
- 工具下载
- TiUP
- 文档地图
- 概览
- 术语及核心概念
- TiUP 组件管理
- FAQ
- 故障排查
- TiUP 命令参考手册
- 命令概览
- TiUP 命令
- TiUP Cluster 命令
- TiUP Cluster 命令概览
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUP DM 命令
- TiUP DM 命令概览
- tiup dm audit
- tiup dm deploy
- tiup dm destroy
- tiup dm disable
- tiup dm display
- tiup dm edit-config
- tiup dm enable
- tiup dm help
- tiup dm import
- tiup dm list
- tiup dm patch
- tiup dm prune
- tiup dm reload
- tiup dm replay
- tiup dm restart
- tiup dm scale-in
- tiup dm scale-out
- tiup dm start
- tiup dm stop
- tiup dm template
- tiup dm upgrade
- TiDB 集群拓扑文件配置
- DM 集群拓扑文件配置
- TiUP 镜像参考指南
- TiUP 组件文档
- PingCAP Clinic 诊断服务 (Technical Preview)
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- 关于 Data Migration
- 快速开始
- 部署 DM 集群
- 入门指南
- 进阶教程
- 运维管理
- 参考手册
- 使用示例
- 异常解决
- 版本发布历史
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- TiUniManager
- 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]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER TABLE COMPACT
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
CHANGE DRAINER
CHANGE PUMP
COMMIT
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
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 PLACEMENT POLICY
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 PLACEMENT POLICY
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 PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
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 模式
- 表属性
- 事务
- 视图
- 分区表
- 临时表
- 缓存表
- 字符集和排序
- Placement Rules in SQL
- 系统表
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
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
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)
- 版本发布历史
- 术语表
TiDB 5.0.4 Release Notes
发版日期:2021 年 9 月 27 日
TiDB 版本:5.0.4
兼容性更改
TiDB
- 修复在新会话中执行
SHOW VARIABLES
速度较慢的问题。该修复回退了 #19341 中的部分更改,可能会引起兼容性问题。#24326 - 将系统变量
tidb_stmt_summary_max_stmt_count
的默认值从200
修改为3000
#25873
- 以下 Bug 修复涉及执行结果变化,可能引起兼容性变化:
- 修复了当
UNION
的子计划包含NULL
值时 TiDB 返回错误结果的问题 #26559 - 修复了
greatest(datetime) union null
返回空字符串的问题 #26532 - 修复了
last_day
函数的行为在 SQL 模式下不兼容的问题 #26000 - 修复了
having
子句可能执行错误的问题 #26496 - 修复了当
between
表达式两边的 collation 不一致会导致查询结果错误的问题 #27146 - 修复了当
group_concat
函数包含非bin
的 collation 时查询结果错误的问题 #27429 - 修复了当开启 New Collation 时,在多列上执行
count(distinct)
表达式结果错误的问题 #27091 - 修复了
extract
函数的参数是负数时查询结果错误的问题 #27236 - 修复了当
SQL_MODE
为 'STRICT_TRANS_TABLES' 时,插入非法时间不报错的问题 #26762 - 修复了当
SQL_MODE
为 'NO_ZERO_IN_DATE' 时,使用非法的默认时间不报错的问题 #26766 - 修复了索引前缀的查询范围问题 #26029
- 修复了
LOAD DATA
语句可能会异常导入非 utf8 数据的问题 #25979 - 修复了当二级索引包含主键中的列时,
insert ignore on duplicate update
可能插入错误数据的问题 #25809 - 修复了当分区表有聚簇索引时,
insert ignore duplicate update
可能插入错误数据的问题 #25846 - 修复了当 point get 或 batch point get 的查找键是
ENUM
类型时,查询结果可能错误的问题 #24562 - 修复了
BIT
类型值做除法时查询结果不正确的问题 #23479 - 修复了
prepared
语句和直接查询的结果可能不一致的问题 #22949 - 修复了当
YEAR
类型与字符串或整数类型比较时,结果可能错误的问题 #23262
- 修复了当
- 修复在新会话中执行
功能增强
TiDB
- 支持将系统变量
tidb_enforce_mpp
的值设为1
以忽略优化器代价估算,强制使用 MPP 模式 #26382
- 支持将系统变量
TiKV
- 支持动态修改 TiCDC 配置 #10645
PD
- 为 TiDB Dashboard 增加基于 OIDC 的 SSO 支持 #3884
TiFlash
- 支持在 DAG 请求中使用
HAVING()
函数 - 支持
DATE()
函数 - 为 Grafana 面板增加每个实例的写入吞吐
- 支持在 DAG 请求中使用
提升改进
TiDB
- 基于直方图的 row count 来触发 auto-analyze #24237
- 当一个 TiFlash 节点此前因宕机重启过,TiDB 一段时间内不给该节点发送请求 #26757
- 增大
split region
的速度上限,使split table
和presplit
更稳定 #22969 - 支持 MPP 查询的重试 #26483
- 在发起 MPP 查询之前检查 TiFlash 的可用性 #1807
- 支持稳定结果模式,使查询结果更稳定 #26084
- 支持 MySQL 系统变量
init_connect
及相关功能 #18894 - 在 MPP 模式中彻底下推
COUNT(DISTINCT)
聚合函数 #25861 - 当聚合函数在
EXPLAIN
语句中不能被下推时打印警告日志 #25736 - 在 Grafana 监控中为
TiFlashQueryTotalCounter
加上错误标签 #25327 - 支持在 HTTP API 中通过二级索引查询聚簇索引表的 MVCC 数据 #24209
- 优化
prepared
语句在解析器的内存分配 #24371
TiKV
PD
- 提升了 PD 之间同步 Region 信息的性能 #3993
Tools
Dumpling
- 支持对 MySQL 兼容的特定数据库进行备份,这些数据库不支持
START TRANSACTION ... WITH CONSISTENT SNAPSHOT
和SHOW CREATE TABLE
语法 #309
- 支持对 MySQL 兼容的特定数据库进行备份,这些数据库不支持
TiCDC
- 优化 Unified Sorter 使用内存排序时的内存管理 #2553
- 禁止使用不同的 major 和 minor 版本启动 TiCDC 节点 #2598
- 当某张表的 Region 从某个 TiKV 节点全部迁移走时,减少 goroutine 资源的使用 #2284
- 移除
file sorter
文件排序器 #2326 - 总是从 TiKV 获取行变更的历史值 (old value),输出会根据
enable-old-value
配置进行调整 #2301 - 优化连接 PD 时缺少证书情况下的报错提示 #1973
- 在高并发下减少 workerpool 中创建的 goroutine 数量 #2211
- 为所有 KV 客户端创建全局共享的 gRPC 连接池 #2533
Bug 修复
TiDB
- 修复了当查询分区表且分区键带有
IS NULL
条件时,TiDB 可能 panic 的问题 #23802 - 修复了
FLOAT64
类型的溢出检查与 MySQL 不一致的问题 #23897 - 修复了
case when
表达式的字符集和排序规则错误的问题 #26662 - 修复了提交悲观事务可能会导致写冲突的问题 #25964
- 修复了在悲观事务中索引键值可能会被重复提交的问题 #26359 #10600
- 修复了清除 Async Commit 锁时可能会导致 TiDB panic 的问题 #25778
- 修复了使用
INDEX MERGE
时可能找不到列的问题 #25045 - 修复了使用
ALTER USER REQUIRE SSL
会清空用户的authentication_string
的问题 #25225 - 修复了新集群上系统变量
tidb_gc_scan_lock_mode
的值显示为 "PHYSICAL" 而实际是 "LEGACY" 的问题 #25100 - 修复了系统表
TIKV_REGION_PEERS
没有正确显示DOWN
状态的问题 #24879 - 修复了使用 HTTP API 时导致内存泄漏的问题 #24649
- 修复了视图不支持
DEFINER
的问题 #24414 - 修复了
tidb-server --help
退出状态是2
的问题 #24046 - 修复了设置全局系统变量
dml_batch_size
不生效的问题 #24709 - 修复了同时使用
read_from_storage
和分区表会报错的问题 #20372 - 修复了 TiDB 在执行投影算子时会 Panic 的问题 #24264
- 修复了统计信息可能导致查询 Panic 的问题 #24061
- 修复了在
BIT
类型的列上使用approx_percentile
函数可能 Panic 的问题 #23662 - 修复了 Grafana 上 Coprocessor Cache 面板的数据显示不正确的问题 #26338
- 修复了并发 truncate 同一个分区会导致 DDL 语句执行卡住的问题 #26229
- 修复当会话变量用作
GROUP BY
项时查询结果出错的问题 #27106 - 修复连接表时
VARCHAR
类型与时间戳之间错误的隐式转换 #25902 - 修复相关子查询语句中的错误结果 #27233
- 修复了当查询分区表且分区键带有
TiKV
- 修复损坏的快照文件可能会造成磁盘空间无法回收的问题 #10813
- 修复了 TiKV 在启用 Titan 并从 5.0 以前的版本升级时出现 Panic 的问题 #10843
- 修复了高版本的 TiKV 无法回滚到 v5.0.x 的问题 #10843
- 修复了启用 Titan 并从 v5.0 以前的版本升级到 v5.0 及以后的版本时 TiKV 崩溃的问题(例如,如果集群从 TiKV v3.x 升级并在升级之前启用了 Titan,则该集群可能会遇到该问题)#10774
- 修复了遗留的悲观锁导致的解析失败的问题 #26404
- 修复在某些平台上计算时间间隔出现 Panic 的问题 #10571
- 修复 Load Base Split 中
batch_get_command
的键值未编码问题 #10542
PD
TiFlash
- 修复执行扫表任务时潜在的进程崩溃问题
- 修复执行 MPP 任务时潜在的内存泄漏问题
- 修复处理 DAG 请求时出现
duplicated region
报错的问题 - 修复执行
COUNT
或COUNT DISTINCT
函数时出现非预期结果的问题 - 修复执行 MPP 任务时潜在的进程崩溃问题
- 修复 TiFlash 多盘部署时无法恢复数据的潜在问题
- 修复析构
SharedQueryBlockInputStream
时出现进程崩溃的潜在问题 - 修复析构
MPPTask
时出现进程崩溃的潜在问题 - 修复 TiFlash 无法建立 MPP 连接时出现非预期结果的问题
- 修复解锁时潜在的进程崩溃问题
- 修复写入压力大时 metrics 中 store size 不准确的问题
- 修复当查询过滤条件包含诸如
CONSTANT
、<
、<=
、>
、>=
或COLUMN
时出现错误结果的问题 - 修复 TiFlash 长时间运行后无法回收 Delta 数据的潜在问题
- 修复 metrics 显示错误数值的潜在问题
- 修复多盘部署时数据不一致的潜在问题
Tools
Dumpling
- 修复在 MySQL 8.0.3 或更高版本执行
show table status
语句卡住的问题 #322
- 修复在 MySQL 8.0.3 或更高版本执行
TiCDC
- 修复将
mysql.TypeString, mysql.TypeVarString, mysql.TypeVarchar
等类型的数据编码为 JSON 时进程崩溃的问题 #2758 - 修复重新调度一张表时多个处理器将数据写入同一张表引发的数据不一致的问题 #2417
- 减小 gRPC 窗口来避免 Region 数量过多时触发内存溢出 #2724
- 修复内存压力大时 gRPC 连接频繁断开的错误 #2202
- 修复 TiCDC 在处理无符号
TINYINT
类型时崩溃的问题 #2648 - 修复 TiCDC Open Protocol 在上游插入事务并删除同一行数据的情况下输出空值的问题 #2612
- 修复同步任务从一个表结构变更的 finish TS 开始时 DDL 处理失败的问题 #2603
- 修复无响应的下游中断 old owner 中的同步任务直到该任务超时的问题 #2295
- 修复元信息管理问题 #2558
- 修复 TiCDC 切换 owner 后出现数据不一致的问题 #2230
- 修复
capture list
命令输出中出现已过期 capture 的问题 #2388 - 修复集成测试中遇到的由于 DDL Job 重复导致的
ErrSchemaStorageTableMiss
错误 #2422 - 修复遇到
ErrGCTTLExceeded
错误时 changefeed 无法被删除的问题 #2391 - 修复同步数据量大的表到 cdclog 失败的问题 #1259 #2424
- 修复客户端向后兼容性问题 #2373
- 修复
SinkManager
中对 map 的不安全并发访问 #2299 - 修复 owner 在执行 DDL 语句时崩溃可能导致 DDL 任务丢失的问题 #1260
- 修复在 Region 初始化时立刻执行清锁的问题 #2188
- 修复创建新的分区表时部分分区被重复分发的问题 #2263
- 修复同步任务已删除但 TiCDC 持续报警的问题 #2156
- 修复将
文档内容是否有帮助?