- 关于 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]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
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 模式
- 表属性
- 事务
- 垃圾回收 (GC)
- 视图
- 分区表
- 临时表
- 字符集和排序规则
- 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_RULES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
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)
- 版本发布历史
- 术语表
TiDB 3.0.2 Release Notes
发版日期:2019 年 8 月 7 日
TiDB 版本:3.0.2
TiDB Ansible 版本:3.0.2
TiDB
- SQL 优化器
- 修复当同一张表在查询里出现多次且逻辑上查询结果恒为空时报错 “Can’t find column in schema” 的问题 #11247
- 修复了
TIDB_INLJ
Hint 无法以指定表为 Inner 表构建 IndexJoin 时仍,会强制将其作为 Outer 表构建 IndexJoin,同时 Hint 可能会在不应生效的地方生效的错误,该错误是由于强制选取 IndexJoin 的判断逻辑有误,以及对表别名的处理有误导致的;该错误仅对包含TIDB_INLJ
的查询产生影响 #11362 - 修复某些情况下(例如
SELECT IF(1,c,c) FROM t
),查询结果的列名称不正确的问题 #11379 - 修复
LIKE
表达式某些情况下被隐式转换为 0,导致诸如SELECT 0 LIKE 'a string'
返回结果为TRUE
的问题 #11411 - 支持在
SHOW
语句中使用子查询,现在可以支持诸如SHOW COLUMNS FROM tbl WHERE FIELDS IN (SELECT 'a')
的写法 #11459 - 修复
outerJoinElimination
优化规则没有正确处理列的别名,导致找不到聚合函数的相关列而查询报错的问题;改进了优化过程中对别名的解析,以使得优化可以覆盖更多类型的查询 #11377 - 修复 Window Function 中多个违反语义约束(例如
UNBOUNDED PRECEDING
不允许在 Frame 定义的最后)时没有报错的问题 #11543 - 修复
ERROR 3593 (HY000): You cannot use the window function FUNCTION_NAME in this context
报错信息中,FUNCTION_NAME
不为小写的问题,导致与 MySQL 不兼容 #11535 - 修复 Window Function 中
IGNORE NULLS
语法尚未实现,但使用时没有报错的问题 #11593 - 修复优化器对时间类型数据的等值条件代价估算不准确的问题 #11512
- 支持根据反馈信息对统计信息 Top-N 进行更新 #11507
- SQL 执行引擎
- 修复
INSERT
函数在参数中包含NULL
时,返回值不为NULL
的问题 #11248 - 修复
ADMIN CHECKSUM
语句在检查分区表时计算结果不正确的问题 #11266 - 修复 INDEX JOIN 在使用前缀索引时可能结果不正确的问题 #11246
- 修复
DATE_ADD
函数在进行涉及微秒的日期减法时,没有正确地对日期的小数位数进行对齐导致结果不正确的问题 #11288 - 修复
DATE_ADD
函数没有正确地对 INTERVAL 中的负数部分处理导致结果不正确的问题 #11325 - 修复
Mod(%)
、Multiple(*)
和Minus(-)
返回结果为 0 时,在小数位数较多(例如select 0.000 % 0.11234500000000000000
)的情况下与 MySQL 位数不一致的问题 #11251 - 修复
CONCAT
和CONCAT_WS
函数在返回结果长度超过max_allowed_packet
时,没有正确返回 NULL 和 Warning 的问题 #11275 - 修复
SUBTIME
和ADDTIME
函数在参数不合法时,没有正确返回 NULL 和 Warning 的问题 #11337 - 修复
CONVERT_TZ
函数在参数不合法时,没有正确返回 NULL 的问题 #11359 EXPLAIN ANALYZE
结果中添加了MEMORY
列,显示 QUERY 的内存使用 #11418EXPLAIN
结果中,为笛卡尔积 Join 添加了CARTESIAN
关键字 #11429- 修复类型为 FLOAT 和 DOUBLE 的自增列数据不正确的问题 #11385
- 修复 Dump Pseudo Statistics 时,由于部分信息为
nil
导致 panic 的问题 #11460 - 修复常量折叠优化导致
SELECT … CASE WHEN … ELSE NULL …
查询结果不正确的问题 #11441 - 修复
floatStrToIntStr
对诸如+999.9999e2
的输入没有正确解析的问题 #11473 - 修复
DATE_ADD
和DATE_SUB
函数结果超出合法范围时,某些情况下不会返回NULL
的问题 #11476 - 修复长字符串转换为整型时,若字符串包含不合法字符,转换结果与 MySQL 不一致的问题 #11469
- 修复
REGEXP BINARY
函数对大小写敏感,导致与 MySQL 不兼容的问题 #11504 - 修复
GRANT ROLE
语句在接受CURRENT_ROLE
时报错的问题;修复REVOKE ROLE
语句没有能够正确收回mysql.default_role
权限的问题 #11356 - 修复执行诸如
SELECT ADDDATE('2008-01-34', -1)
时,Incorrect datetime value
Warning 信息的显示格式问题 #11447 - 修复将 JSON 数据中的 Float 类型字段转为 Int 类型溢出时,报错信息中应当提示
constant … overflows bigint
而不应当为constant … overflows float
的问题 #11534 - 修复
DATE_ADD
函数接受FLOAT
、DOUBLE
和DECIMAL
类型的列参数时,没有正确地进行类型转换而导致结果可能不正确的问题 #11527 - 修复
DATE_ADD
函数中,没有正确处理 INTERVAL 小数部分的符号而导致结果不正确的问题 #11615 - 修复
Ranger
没有正确处理前缀索引,导致 Index Lookup Join 中包含前缀索引时,查询结果不正确的问题 #11565 - 修复
NAME_CONST
函数第二个参数为负数时执行会报Incorrect arguments to NAME_CONST
的问题 #11268 - 修复一条 SQL 语句在涉及当前时间计算时(例如
CURRENT_TIMSTAMP
或者NOW
),多次取当前时间值,结果与 MySQL 不兼容的问题:现在同一条SQL语句中取当前时间时,均使用相同值 #11394 - 修复了父 Executor
Close
出现错误时,没有对ChildExecutor
调用Close
的问题,该问题可能导致KILL
语句失效时,子ChildExecutor
没有关闭而导致 Goroutine 泄露 #11576
- 修复
- Server
- 修复
LOAD DATA
处理 CSV 文件中缺失的TIMESTAMP
字段时,自动补充的值是 0 不是当前时间戳的问题 #11250 - 修复
SHOW CREATE USER
语句没有正确检查相关权限的问题,以及SHOW CREATE USER CURRENT_USER()
结果中 USER、HOST 可能不正确的问题 #11229 - 修复在 JDBC 中使用
executeBatch
可能返回结果不正确的问题 #11290 - TiKV Server 在更换端口时,减少 Streaming Client 的报错信息的日志打印 #11370
- 优化 Streaming Client 在重新与 TiKV Server 连接时的逻辑:现在 Streaming Client 不会长时间被 Block #11372
INFORMATION_SCHEMA.TIDB_HOT_REGIONS
中新增REGION_ID
#11350- 取消了从 PD API 获取 Region 相关信息时的超时时间,保证在 Region 数量较大时,调用 TiDB API
http://{TiDBIP}:10080/regions/hot
不会因为 PD 超时而获取失败 #11383 - 修复 HTTP API 中,与 Region 相关的请求没有返回分区表相关的 Region 问题 #11466
- 做以下改动以降低用户手动验证悲观锁时,操作较慢导致锁超时的概率 #11521:
- 悲观锁的默认 TTL 时间由 30 秒提升为 40 秒
- 最大允许的 TTL 时间由 60 秒提升为 120 秒
- 悲观锁的持续时间改为从第一次
LockKeys
请求时开始计算
- 修改 TiKV Client 中的
SendRequest
函数逻辑:当连接无法建立时,由一直等待改为尽快尝试连接其他 Peer #11531 - 优化 Region Cache:当一个 Store 下线,同时另一个 Store 以同样的地址上线时,将已下线的 Store 标记为失效以尽快在 Cache 中更新 Store 的信息 #11567
- 为
http://{TiDB_ADDRESS:TIDB_IP}/mvcc/key/{db}/{table}/{handle}
API 的返回结果添加 Region ID 信息 #11557 - 修复 Scatter Table API 没有对 Range Key 进行转义导致 Scatter Table 不生效的问题 #11298
- 优化 Region Cache:当 Region 所在的 Store 无法访问时,将对应的 Store 信息标记失效以避免对这些 Store 的访问造成查询性能下降 #11498
- 修复了多次 DROP 同名 DATABASE 后,DATABASE 内的表结构仍然能够通过 HTTP API 获取到的错误 #11585
- 修复
- DDL
- 修复在非字符串类型且长度为 0 的列建立索引时出错的问题 #11214
- 禁止对带有外键约束和全文索引的列进行修改(注意:TiDB 仍然仅在语法上支持外键约束和全文索引)#11274
- 修复并发使用
ALTER TABLE
语句更改的位置和列的默认值时,可能导致列的索引 Offset 出错的问题 #11346 - 修复解析 JSON 文本的两个问题:
- 禁止 DROP 自增列索引,修复因为 DROP 自增列上的索引导致自增列结果可能出错的问题 #11399
- 修复以下问题 #11492:
- 修复显式指定列的排序规则但没有指定字符集时,列的字符集与排序规则不一致的问题
- 修复
ALTER TABLE … MODIFY COLUMN
指定的字符集和排序规则冲突时,没有正确报错的问题 - 修复
ALTER TABLE … MODIFY COLUMN
指定多次字符集和排序规则时,行为与 MySQL 不兼容的问题
- 为
TRACE
语句的结果添加子查询的 trace 细节信息 #11458 - 优化
ADMIN CHECK TABLE
执行性能,大幅降低了语句的执行耗时 #11547 - 为
SPLIT TABLE … REGIONS/INDEX
添加了返回结果,结果包含TOTAL_SPLIT_REGION
和SCATTER_FINISH_RATIO
展示在超时时间内,切分成功的 Region 数量 #11484 - 修复
ON UPDATE CURRENT_TIMESTAMP
作为列的属性且指定浮点精度时,SHOW CREATE TABLE
等语句显示精度不完整的问题 #11591 - 修复一个虚拟生成列的表达式中含有另一个虚拟生成列时,该列的索引结果不能正确被计算的问题 #11475
- 修复
ALTER TABLE … ADD PARTITION …
语句中,VALUE LESS THAN
后不能出现负号的问题 #11581
- Monitor
TiKV
- 修复由于 Raft Log 写入不及时可能导致 TiKV panic 的 bug #5160
- 修复 TiKV panic 后 panic 信息不会写入日志的 bug #5198
- 修复了悲观事务下 Insert 行为可能不正确的 bug #5203
- 降低一部分不需要人工干预的日志输出级别为 INFO #5193
- 提高存储引擎大小监控项的准确程度 #5200
- 提高 tikc-ctl 中 Region size 的准确程度 #5195
- 提高悲观锁死锁检测性能 #5192
- 提高 Titan 存储引擎 GC 性能 #5197
PD
- 修复 Scatter Region 调度器不能工作的 bug #1642
- 修复 pd-ctl 中不能进行 merge Region 操作的 bug #1653
- 修复 pd-ctl 中不能进行 remove-tombstone 操作的 bug #1651
- 修复 scan region 不能找到 key 范围相交的 Region 的问题 #1648
- 增加重试机制确保 PD 增加成员成功 #1643
Tools
TiDB Binlog
TiDB Lightning
TiDB Ansible
- 修复 Disk Performance 监控把 second 作为 ms 的单位错误的问题 #840
- Spark 新增 log4j 日志配置 #841
- 修复在开启了 Binlog 并且设置了 Kafka 或者 ZooKeeper 时导致生成的 Prometheus 配置文件格式错误的问题 #844
- 修复生成的 TiDB 配置文件中遗漏
pessimistic-txn
配置参数的问题 #850 - TiDB Dashboard 新增和优化 Metrics #853
- TiDB Dashboard 上每个监控项增加描述 #854
- 新增 TiDB Summary Dashboard,用于更好的查看集群状态和排查问题 #855
- TiKV Dashboard 更新 Allocator Stats 监控项 #857
- 修复 Node Exporter 的告警表达式单位错误的问题 #860
- 更新 tispark jar 包为 v2.1.2 版本 #862
- 更新 Ansible Task 功能描述 #867
- 兼容 TiDB 变更,TiDB Dashboard 更新 Local reader requests 监控项的表达式 #874
- Overview Dashboard 更新 TiKV Memory 监控项的表达式,修复监控显示错误的问题 #879
- 移除 Kafka 模式 Binlog 的支持 #878
- 修复执行
rolling_update.yml
操作时,切换 PD Leader 失效的 bug #887
文档内容是否有帮助?