From 2bc5de871b89f1218beefc34d2e4a6dd4437f3b1 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Mon, 29 Apr 2024 10:47:58 +0800 Subject: [PATCH 1/7] lightning: updated toc sections (#17246) --- TOC.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TOC.md b/TOC.md index bd7d819a565f..401f9b247c47 100644 --- a/TOC.md +++ b/TOC.md @@ -521,10 +521,13 @@ - [目标数据库要求](/tidb-lightning/tidb-lightning-requirements.md) - 数据源 - [文件匹配规则](/tidb-lightning/tidb-lightning-data-source.md) + - [表库重命名](/tidb-lightning/tidb-lightning-data-source.md#表库重命名) - [CSV](/tidb-lightning/tidb-lightning-data-source.md#csv) - [SQL](/tidb-lightning/tidb-lightning-data-source.md#sql) - [Parquet](/tidb-lightning/tidb-lightning-data-source.md#parquet) + - [压缩文件](/tidb-lightning/tidb-lightning-data-source.md#压缩文件) - [自定义文件匹配](/tidb-lightning/tidb-lightning-data-source.md#自定义文件匹配) + - [从 Amazon S3 导入数据](/tidb-lightning/tidb-lightning-data-source.md#从-amazon-s3-导入数据) - 物理导入模式 - [概述](/tidb-lightning/tidb-lightning-physical-import-mode.md) - [必要条件及限制](/tidb-lightning/tidb-lightning-physical-import-mode.md#必要条件及限制) From 6772c99cf35d564ecd66a67ce936b95ffb8e703a Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 29 Apr 2024 14:32:58 +0800 Subject: [PATCH 2/7] fix typos (#17247) --- dashboard/dashboard-profiling.md | 2 +- dm/dm-open-api.md | 2 +- encryption-at-rest.md | 2 +- faq/migration-tidb-faq.md | 2 +- faq/sql-faq.md | 2 +- functions-and-operators/string-functions.md | 4 ++-- grafana-pd-dashboard.md | 2 +- oracle-functions-to-tidb.md | 4 ++-- partitioned-table.md | 2 +- quick-start-with-htap.md | 2 +- releases/release-1.0-ga.md | 2 +- releases/release-3.0.8.md | 2 +- releases/release-4.0.0-rc.2.md | 2 +- releases/release-5.1.2.md | 2 +- releases/release-5.2.4.md | 2 +- releases/release-6.0.0-dmr.md | 2 +- releases/release-6.1.1.md | 2 +- releases/release-6.3.0.md | 4 ++-- releases/release-6.5.4.md | 4 ++-- releases/release-6.6.0.md | 2 +- replicate-data-to-kafka.md | 2 +- role-based-access-control.md | 2 +- runtime-filter.md | 2 +- security-compatibility-with-mysql.md | 2 +- sql-prepared-plan-cache.md | 2 +- sql-statements/sql-statement-drop-index.md | 2 +- system-variables.md | 2 +- ticdc/ticdc-faq.md | 2 +- time-to-live.md | 4 ++-- tispark-overview.md | 4 ++-- tiup/tiup-mirror-reference.md | 2 +- 31 files changed, 37 insertions(+), 37 deletions(-) diff --git a/dashboard/dashboard-profiling.md b/dashboard/dashboard-profiling.md index 3cf15bb0266f..ef47cedb403c 100644 --- a/dashboard/dashboard-profiling.md +++ b/dashboard/dashboard-profiling.md @@ -26,7 +26,7 @@ aliases: ['/docs-cn/dev/dashboard/dashboard-profiling/'] - Heap:TiDB、PD、TiKV 实例上各个内部函数的内存占用开销情况 - > 从 v7.5 版本开始,支持获取 TiKV Heap Profile,并且需要 TiDB Dashboad 的运行环境中有 Perl 依赖,否则会报错。 + > 从 v7.5 版本开始,支持获取 TiKV Heap Profile,并且需要 TiDB Dashboard 的运行环境中有 Perl 依赖,否则会报错。 - Mutex:TiDB、PD 实例上各个处于等待状态的 Mutex 情况 diff --git a/dm/dm-open-api.md b/dm/dm-open-api.md index 53de2f19ef8d..1198b7011d17 100644 --- a/dm/dm-open-api.md +++ b/dm/dm-open-api.md @@ -1346,7 +1346,7 @@ curl -X 'GET' \ "name": "string", "source_name": "string", "worker_name": "string", - "stage": "runing", + "stage": "running", "unit": "sync", "unresolved_ddl_lock_id": "string", "load_status": { diff --git a/encryption-at-rest.md b/encryption-at-rest.md index 7b469ab63353..775ba5607e34 100644 --- a/encryption-at-rest.md +++ b/encryption-at-rest.md @@ -283,7 +283,7 @@ TiFlash 当前支持的加密算法与 TiKV 一致,包括 AES128-CTR、AES192- 多个 TiFlash 实例可共用一个主密钥,并且也可以和 TiKV 共用一个主密钥。在生产环境中,推荐通过 AWS KMS 提供主密钥。另外,你也可以通过文件形式提供主密钥。具体的主密钥生成方式和格式均与 TiKV 相同。 -TiFlash 使用数据密钥加密所有落盘的数据文件,包括数据文件、Schmea 文件和计算过程中产生的临时数据文件等。默认情况下,TiFlash 每周自动轮换数据密钥,该轮换周期也可根据需要自定义配置。密钥轮换时,TiFlash 不会重写全部现有文件来替换密钥,但如果集群的写入量恒定,则后台 compaction 任务将会用最新的数据密钥对数据重新加密。TiFlash 跟踪密钥和加密方法,并使用密钥信息对读取的内容进行解密。 +TiFlash 使用数据密钥加密所有落盘的数据文件,包括数据文件、Schema 文件和计算过程中产生的临时数据文件等。默认情况下,TiFlash 每周自动轮换数据密钥,该轮换周期也可根据需要自定义配置。密钥轮换时,TiFlash 不会重写全部现有文件来替换密钥,但如果集群的写入量恒定,则后台 compaction 任务将会用最新的数据密钥对数据重新加密。TiFlash 跟踪密钥和加密方法,并使用密钥信息对读取的内容进行解密。 ### 创建密钥 diff --git a/faq/migration-tidb-faq.md b/faq/migration-tidb-faq.md index 9d3509b3f852..1ee7dfb7d1e7 100644 --- a/faq/migration-tidb-faq.md +++ b/faq/migration-tidb-faq.md @@ -93,7 +93,7 @@ DB2、Oracle 到 TiDB 数据迁移(增量+全量),通常做法有: 目前看来 OGG 最为合适。 -### 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateExecption:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? +### 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateException:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? - 在 Sqoop 中,`--batch` 是指每个批次提交 100 条 statement,但是默认每个 statement 包含 100 条 SQL 语句,所以此时 100 * 100 = 10000 条 SQL 语句,超出了 TiDB 的事务限制 5000 条,可以增加选项 `-Dsqoop.export.records.per.statement=10` 来解决这个问题,完整的用法如下: diff --git a/faq/sql-faq.md b/faq/sql-faq.md index 35b63a74bbc4..f439010f3060 100644 --- a/faq/sql-faq.md +++ b/faq/sql-faq.md @@ -152,7 +152,7 @@ TiDB 支持在会话或全局作用域上修改 [`sql_mode`](/system-variables.m - 对全局作用域变量的修改,设置后将作用于集群中的其它服务器,并且重启后更改依然有效。因此,你无需在每台 TiDB 服务器上都更改 `sql_mode` 的值。 - 对会话作用域变量的修改,设置后只影响当前会话,重启后更改消失。 -## 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateExecption:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? +## 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateException:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? 问题原因:在 Sqoop 中,`--batch` 是指每个批次提交 100 条 statement,但是默认每个 statement 包含 100 条 SQL 语句,所以此时 100 * 100 = 10000 条 SQL 语句,超出了 TiDB 的事务限制 5000 条。 diff --git a/functions-and-operators/string-functions.md b/functions-and-operators/string-functions.md index ab9e92f77623..0dcf4da6819b 100644 --- a/functions-and-operators/string-functions.md +++ b/functions-and-operators/string-functions.md @@ -214,10 +214,10 @@ SELECT CHAR_LENGTH("TiDB") AS LengthOfString; ``` ```sql -SELECT CustomerName, CHAR_LENGTH(CustomerName) AS LenghtOfName FROM Customers; +SELECT CustomerName, CHAR_LENGTH(CustomerName) AS LengthOfName FROM Customers; +--------------------+--------------+ -| CustomerName | LenghtOfName | +| CustomerName | LengthOfName | +--------------------+--------------+ | Albert Einstein | 15 | | Robert Oppenheimer | 18 | diff --git a/grafana-pd-dashboard.md b/grafana-pd-dashboard.md index 6fdf0c351f1e..7f2429cf8b54 100644 --- a/grafana-pd-dashboard.md +++ b/grafana-pd-dashboard.md @@ -103,7 +103,7 @@ summary: PD 重要监控指标详解:使用 TiUP 部署 TiDB 集群时,一 - Replica checker:replica checker 的状态 - Rule checker:rule checker 的状态 - Region merge checker:merge checker 的状态 -- Filter target:尝试选择 Store 作为调度 taget 时没有通过 Filter 的计数 +- Filter target:尝试选择 Store 作为调度 target 时没有通过 Filter 的计数 - Filter source:尝试选择 Store 作为调度 source 时没有通过 Filter 的计数 - Balance Direction:Store 被选作调度 target 或 source 的次数 diff --git a/oracle-functions-to-tidb.md b/oracle-functions-to-tidb.md index eb92865e3e1b..9e73992359ce 100644 --- a/oracle-functions-to-tidb.md +++ b/oracle-functions-to-tidb.md @@ -65,13 +65,13 @@ TiDB 中区分 `NULL` 和空字符串 `''`。 Oracle 支持 `INSERT` 语句中读写同一张表。例如: ```sql -INSERT INTO table1 VALUES (feild1,(SELECT feild2 FROM table1 WHERE...)) +INSERT INTO table1 VALUES (field1,(SELECT field2 FROM table1 WHERE...)) ``` TiDB 不支持 `INSERT` 语句中读写同一张表。例如: ```sql -INSERT INTO table1 VALUES (feild1,(SELECT T.fields2 FROM table1 T WHERE...)) +INSERT INTO table1 VALUES (field1,(SELECT T.fields2 FROM table1 T WHERE...)) ``` ### 获取前 n 行数据 diff --git a/partitioned-table.md b/partitioned-table.md index f8c5a5b68dac..b38ee1763a1f 100644 --- a/partitioned-table.md +++ b/partitioned-table.md @@ -597,7 +597,7 @@ TiDB 从 v7.0.0 开始支持 Key 分区。在 v7.0.0 之前的版本中,创建 Key 分区与 Hash 分区都可以保证将数据均匀地分散到一定数量的分区里面,区别是 Hash 分区只能根据一个指定的整数表达式或字段进行分区,而 Key 分区可以根据字段列表进行分区,且 Key 分区的分区字段不局限于整数类型。TiDB Key 分区表的 Hash 算法与 MySQL 不一样,因此表的数据分布也不一样。 -创建 Key 分区表时,你需要在 `CREATE TABLE` 后面添加 `PARTITION BY KEY (columList)`,其中 `columnList` 是字段列表,可以包含一个或多个字段。每个字段的类型可以是除 `BLOB`、`JSON`、`GEOMETRY` 之外的任意类型(请注意 TiDB 不支持 `GEOMETRY` 类型)。此外,你很可能还需要加上 `PARTITIONS num`,其中 `num` 是一个正整数,表示将表划分多少个分区;或者加上分区名的定义,例如,加上 `(PARTITION p0, PARTITION p1)` 代表将表划分为两个分区,分区名为 `p0` 和 `p1`。 +创建 Key 分区表时,你需要在 `CREATE TABLE` 后面添加 `PARTITION BY KEY (columnList)`,其中 `columnList` 是字段列表,可以包含一个或多个字段。每个字段的类型可以是除 `BLOB`、`JSON`、`GEOMETRY` 之外的任意类型(请注意 TiDB 不支持 `GEOMETRY` 类型)。此外,你很可能还需要加上 `PARTITIONS num`,其中 `num` 是一个正整数,表示将表划分多少个分区;或者加上分区名的定义,例如,加上 `(PARTITION p0, PARTITION p1)` 代表将表划分为两个分区,分区名为 `p0` 和 `p1`。 下面的语句将创建一个 Key 分区表,按 `store_id` 分成 4 个分区: diff --git a/quick-start-with-htap.md b/quick-start-with-htap.md index 7c5c9105508b..5dfee803d684 100644 --- a/quick-start-with-htap.md +++ b/quick-start-with-htap.md @@ -22,7 +22,7 @@ summary: 本文介绍如何快速上手体验 TiDB 的 HTAP 功能。 ## 体验步骤 -本文的步骤以 [TPC-H](http://www.tpc.org/tpch/) 数据集为例,通过其中一个查询场景来体验 TiDB HTAP 的便捷性和高性能。TPC-H 是业界较为流行的决策支持(Desision Support)业务 Benchmark。它包含大数据量下,一个业务决策分析系统所需要响应的不同类型高复杂度的即席查询。如果需要体验 TPC-H 完整的 22 条 SQL,可以访问 [tidb-bench 仓库](https://github.com/pingcap/tidb-bench/tree/master/tpch/queries) 或者阅读 TPC-H 官网说明了解如何生成查询语句以及数据。 +本文的步骤以 [TPC-H](http://www.tpc.org/tpch/) 数据集为例,通过其中一个查询场景来体验 TiDB HTAP 的便捷性和高性能。TPC-H 是业界较为流行的决策支持(Decision Support)业务 Benchmark。它包含大数据量下,一个业务决策分析系统所需要响应的不同类型高复杂度的即席查询。如果需要体验 TPC-H 完整的 22 条 SQL,可以访问 [tidb-bench 仓库](https://github.com/pingcap/tidb-bench/tree/master/tpch/queries) 或者阅读 TPC-H 官网说明了解如何生成查询语句以及数据。 ### 第 1 步:部署试用环境 diff --git a/releases/release-1.0-ga.md b/releases/release-1.0-ga.md index 79f9c82fce91..8e4b02836f53 100644 --- a/releases/release-1.0-ga.md +++ b/releases/release-1.0-ga.md @@ -18,7 +18,7 @@ aliases: ['/docs-cn/dev/releases/release-1.0-ga/','/docs-cn/dev/releases/ga/'] + 提升 MySQL 兼容性 + 支持 `NO_SQL_CACHE` 语法,控制存储引擎对缓存的使用 + 重构 Hash Aggregator 算子,降低内存使用 -+ 支持 Stream Aggragator 算子 ++ 支持 Stream Aggregator 算子 ## PD diff --git a/releases/release-3.0.8.md b/releases/release-3.0.8.md index d904d5fb1086..3751b672f0c5 100644 --- a/releases/release-3.0.8.md +++ b/releases/release-3.0.8.md @@ -79,7 +79,7 @@ TiDB Ansible 版本:3.0.8 - 修改 Coprocessor 遇到错误时输出日志的级别从 `error` 改成 `warn` [#6051](https://github.com/tikv/tikv/pull/6051) - 修改统计信息采样数据的更新行为从直接更行改成先删除再插入,更新行为与 tidb-server 保持一致 [#6069](https://github.com/tikv/tikv/pull/6096) + Raftstore - - 修复因重复向 `peerfsm` 发送 destory 消息,`peerfsm` 被多次销毁导致 panic 的问题 [#6297](https://github.com/tikv/tikv/pull/6297) + - 修复因重复向 `peerfsm` 发送 destroy 消息,`peerfsm` 被多次销毁导致 panic 的问题 [#6297](https://github.com/tikv/tikv/pull/6297) - `split-region-on-table` 默认值由 `true` 改成 `false`,默认关闭按 table 切分 Region 的功能 [#6253](https://github.com/tikv/tikv/pull/6253) + Engine - 修复极端条件下因 RocksDB 迭代器错误未正确处理导致可能返回空数据的问题 [#6326](https://github.com/tikv/tikv/pull/6326) diff --git a/releases/release-4.0.0-rc.2.md b/releases/release-4.0.0-rc.2.md index c3423a7acafe..b2c4b4bb5532 100644 --- a/releases/release-4.0.0-rc.2.md +++ b/releases/release-4.0.0-rc.2.md @@ -72,7 +72,7 @@ TiDB 版本:4.0.0-rc.2 + TiKV - 加密存储适配 tikv-ctl,适配后开启加密存储后通过 tikv-ctl 操作管理集群 [#7698](https://github.com/tikv/tikv/pull/7698) - - 新增加密码 Snapshot 中的 `lock column famliy` 的功能 [#7712](https://github.com/tikv/tikv/pull/7712) + - 新增加密码 Snapshot 中的 `lock column family` 的功能 [#7712](https://github.com/tikv/tikv/pull/7712) - 修改 Raftstore latency 在 Grafana 面板显示方式,采用 heatmap 方便诊断性能抖动问题 [#7717](https://github.com/tikv/tikv/pull/7717) - 支持配置 gRPC 消息大小的上限 [#7824](https://github.com/tikv/tikv/pull/7824) - Grafana 面板中添加了 encryption 相关的监控 [#7827](https://github.com/tikv/tikv/pull/7827) diff --git a/releases/release-5.1.2.md b/releases/release-5.1.2.md index 3b419ce2d1fc..a1d834eaf4f2 100644 --- a/releases/release-5.1.2.md +++ b/releases/release-5.1.2.md @@ -74,7 +74,7 @@ TiDB 版本:5.1.2 - 修复 hash 列为 `ENUM` 类型时 index hash join 的结果可能出错的问题 [#27893](https://github.com/pingcap/tidb/issues/27893) - 修复极少数情况下 batch client 复用空闲连接可能阻塞请求发送的问题 [#27678](https://github.com/pingcap/tidb/pull/27678) - 修复了 `FLOAT64` 类型的溢出检查与 MySQL 不一致的问题 [#23897](https://github.com/pingcap/tidb/issues/23897) - - 修复 TiDB 把 `pd is timeout` 错误返回成 `unkonwn` 的问题 [#26147](https://github.com/pingcap/tidb/issues/26147) + - 修复 TiDB 把 `pd is timeout` 错误返回成 `unknown` 的问题 [#26147](https://github.com/pingcap/tidb/issues/26147) - 修复了 `case when` 表达式的字符集和排序规则错误的问题 [#26662](https://github.com/pingcap/tidb/issues/26662) - 修复 MPP 查询可能返回 `can not found column in Schema column` 错误的问题 [#28148](https://github.com/pingcap/tidb/pull/28148) - 修复 TiFlash 宕机可能导致 TiDB Panic 的问题 [#28096](https://github.com/pingcap/tidb/issues/28096) diff --git a/releases/release-5.2.4.md b/releases/release-5.2.4.md index 5c688d156dc8..0ce36284a9d6 100644 --- a/releases/release-5.2.4.md +++ b/releases/release-5.2.4.md @@ -88,7 +88,7 @@ TiDB 版本:5.2.4 - 修复系统变量 `max_allowed_packet` 不生效的问题 [#31422](https://github.com/pingcap/tidb/issues/31422) - 修复当 auto ID 超出范围时,`REPLACE` 语句错误地修改了其它行的问题 [#29483](https://github.com/pingcap/tidb/issues/29483) - 修复慢查询日志无法正常输出而且可能消耗大量内存的问题 [#32656](https://github.com/pingcap/tidb/issues/32656) - - 修复 NATRUAL JOIN 可能输出多余列的问题 [#29481](https://github.com/pingcap/tidb/issues/29481) + - 修复 NATURAL JOIN 可能输出多余列的问题 [#29481](https://github.com/pingcap/tidb/issues/29481) - 修复使用前缀列索引时,ORDER + LIMIT 语句可能导致结果出错的问题 [#29711](https://github.com/pingcap/tidb/issues/29711) - 修复乐观事务重试时,DOUBLE 类型的自增列可能在重试时值发生改变的问题 [#29892](https://github.com/pingcap/tidb/issues/29892) - 修复 STR_TO_DATE 函数无法正确处理微秒部分的前导 0 的问题 [#30078](https://github.com/pingcap/tidb/issues/30078) diff --git a/releases/release-6.0.0-dmr.md b/releases/release-6.0.0-dmr.md index 8d0bd0010ae3..66a9057ed80d 100644 --- a/releases/release-6.0.0-dmr.md +++ b/releases/release-6.0.0-dmr.md @@ -71,7 +71,7 @@ v6.0.0 是 DMR 版本,版本名称为 6.0.0-DMR。 Top SQL 是一个面向运维人员及应用开发者的一体化、自助的数据库性能观测和诊断功能,集成于 TiDB Dashboard 图形化界面,在 TiDB v6.0.0 正式发布。 - 与现有 TiDB Dashboard 中各个面向数据库专家的诊断功能不同的是,Top SQL 完全面向非专家:你不需要观察几千张监控图表寻找相关性,也不需要理解诸如 Raft Snapsnot、RocksDB、MVCC、TSO 等 TiDB 内部机制,仅需要知道常见的数据库概念,如索引、锁冲突、执行计划等,就可以通过 Top SQL 快速分析数据库负载情况,并提升应用程序的性能。 + 与现有 TiDB Dashboard 中各个面向数据库专家的诊断功能不同的是,Top SQL 完全面向非专家:你不需要观察几千张监控图表寻找相关性,也不需要理解诸如 Raft Snapshot、RocksDB、MVCC、TSO 等 TiDB 内部机制,仅需要知道常见的数据库概念,如索引、锁冲突、执行计划等,就可以通过 Top SQL 快速分析数据库负载情况,并提升应用程序的性能。 Top SQL 功能功能默认关闭。启用后,通过 Top SQL 提供的各个 TiDB 或 TiKV 节点实时 CPU 负载情况,你可以直观了解各节点的高 CPU 负载来自哪些 SQL 语句,从而快速分析诸如数据库热点和负载陡升等问题。例如,你可以通过 Top SQL 分析某个 TiKV 节点上正在消耗 90% CPU 负载的 SQL 查询语句的具体内容及执行情况。 diff --git a/releases/release-6.1.1.md b/releases/release-6.1.1.md index bd1def283630..46b8c1edca78 100644 --- a/releases/release-6.1.1.md +++ b/releases/release-6.1.1.md @@ -87,7 +87,7 @@ TiDB 版本:6.1.1 - 修复了在查询分区表中如果查询条件中有分区键且两者使用了不同的 COLLATE 时会错误的进行分区裁剪的问题 [#32749](https://github.com/pingcap/tidb/issues/32749) @[mjonss](https://github.com/mjonss) - 修复了在开启 TiDB Binlog 时,TiDB 执行 `ALTER SEQUENCE` 会产生错误的元信息版本号,进而导致 Drainer 报错退出的问题 [#36276](https://github.com/pingcap/tidb/issues/36276) @[AilinKid](https://github.com/AilinKid) - 修复了在极端情况下,启动 TiDB 可能进入错误状态的问题 [#36791](https://github.com/pingcap/tidb/issues/36791) @[xhebox](https://github.com/xhebox) - - 修复了在 TiDB Dashboard 中查询分区表的执行计划时,有可能出现 `UnkownPlanID` 的问题 [#35153](https://github.com/pingcap/tidb/issues/35153) @[time-and-fate](https://github.com/time-and-fate) + - 修复了在 TiDB Dashboard 中查询分区表的执行计划时,有可能出现 `UnknownPlanID` 的问题 [#35153](https://github.com/pingcap/tidb/issues/35153) @[time-and-fate](https://github.com/time-and-fate) - 修复了 `LOAD DATA` 语句中列的列表不生效的问题 [#35198](https://github.com/pingcap/tidb/issues/35198) @[SpadeA-Tang](https://github.com/SpadeA-Tang) - 修复开启 TiDB Binlog 后插入重复数据导致 data and columnID count not match 错误的问题 [#33608](https://github.com/pingcap/tidb/issues/33608) @[zyguan](https://github.com/zyguan) - 去除 `tidb_gc_life_time` 设置时间检查限制 [#35392](https://github.com/pingcap/tidb/issues/35392) @[TonsnakeLin](https://github.com/TonsnakeLin) diff --git a/releases/release-6.3.0.md b/releases/release-6.3.0.md index 423efc2f70d5..2c29a2914f5c 100644 --- a/releases/release-6.3.0.md +++ b/releases/release-6.3.0.md @@ -331,9 +331,9 @@ TiDB 版本:6.3.0-DMR + TiDB - - 修复权限检查跳过 `PREAPRE` 语句的问题 [#35784](https://github.com/pingcap/tidb/issues/35784) @[lcwangchao](https://github.com/lcwangchao) + - 修复权限检查跳过 `PREPARE` 语句的问题 [#35784](https://github.com/pingcap/tidb/issues/35784) @[lcwangchao](https://github.com/lcwangchao) - 修复系统变量 `tidb_enable_noop_variable` 能够设置为 `WARN` 的问题 [#36647](https://github.com/pingcap/tidb/issues/36647) @[lcwangchao](https://github.com/lcwangchao) - - 修复存在表达式索引定义时,`INFORMAITON_SCHEMA.COLUMNS` 表的 `ORDINAL_POSITION` 列可能不正确的问题 [#31200](https://github.com/pingcap/tidb/issues/31200) @[bb7133](https://github.com/bb7133) + - 修复存在表达式索引定义时,`INFORMATION_SCHEMA.COLUMNS` 表的 `ORDINAL_POSITION` 列可能不正确的问题 [#31200](https://github.com/pingcap/tidb/issues/31200) @[bb7133](https://github.com/bb7133) - 修复时间戳大于 `MAXINT32` 时 TiDB 不报错的问题 [#31585](https://github.com/pingcap/tidb/issues/31585) @[bb7133](https://github.com/bb7133) - 修复使用企业版插件时无法启动 TiDB server 的问题 [#37319](https://github.com/pingcap/tidb/issues/37319) @[xhebox](https://github.com/xhebox) - 修复 `SHOW CREATE PLACEMENT POLICY` 输出结果不正确的问题 [#37526](https://github.com/pingcap/tidb/issues/37526) @[xhebox](https://github.com/xhebox) diff --git a/releases/release-6.5.4.md b/releases/release-6.5.4.md index e30539bab0c3..1a878f69eec1 100644 --- a/releases/release-6.5.4.md +++ b/releases/release-6.5.4.md @@ -112,7 +112,7 @@ TiDB 版本:6.5.4 - 修复 kill 连接之后可能会出现 go coroutine 泄露的问题 [#46034](https://github.com/pingcap/tidb/issues/46034) @[pingyu](https://github.com/pingyu) - 修复 `tmp-storage-quota` 配置无法生效的问题 [#45161](https://github.com/pingcap/tidb/issues/45161) [#26806](https://github.com/pingcap/tidb/issues/26806) @[wshwsh12](https://github.com/wshwsh12) - 修复集群中有 TiFlash 节点宕机时,TiFlash 副本可能不可用的问题 [#38484](https://github.com/pingcap/tidb/issues/38484) @[hehechen](https://github.com/hehechen) - - 修复并发读写 `Config.Lables` 时可能出现数据竞争导致 TiDB crash 的问题 [#45561](https://github.com/pingcap/tidb/issues/45561) @[genliqi](https://github.com/gengliqi) + - 修复并发读写 `Config.Labels` 时可能出现数据竞争导致 TiDB crash 的问题 [#45561](https://github.com/pingcap/tidb/issues/45561) @[genliqi](https://github.com/gengliqi) - 修复在集群规模大时 client-go 周期性更新 `min-resolved-ts` 可能造成 PD OOM 的问题 [#46664](https://github.com/pingcap/tidb/issues/46664) @[HuSharp](https://github.com/HuSharp) + TiKV @@ -132,7 +132,7 @@ TiDB 版本:6.5.4 - 修复当 etcd 已经启动,但 client 尚未连接上 etcd 时,调用 client 会导致 PD panic 的问题 [#6860](https://github.com/tikv/pd/issues/6860) @[HuSharp](https://github.com/HuSharp) - 修复 leader 长时间无法退出的问题 [#6918](https://github.com/tikv/pd/issues/6918) @[bufferflies](https://github.com/bufferflies) - - 修复 Placement Rule 在使用 `LOCATION_LABLES` 时,SQL 和 Rule Checker 不兼容的问题 [#38605](https://github.com/pingcap/tidb/issues/38605) @[nolouch](https://github.com/nolouch) + - 修复 Placement Rule 在使用 `LOCATION_LABELS` 时,SQL 和 Rule Checker 不兼容的问题 [#38605](https://github.com/pingcap/tidb/issues/38605) @[nolouch](https://github.com/nolouch) - 修复 PD 可能会非预期地向 Region 添加多个 Learner 的问题 [#5786](https://github.com/tikv/pd/issues/5786) @[HunDunDM](https://github.com/HunDunDM) - 修复在 rule checker 选定 peer 时,unhealthy peer 无法被移除的问题 [#6559](https://github.com/tikv/pd/issues/6559) @[nolouch](https://github.com/nolouch) - 修复 `unsafe recovery` 中失败的 learner peer 在 `auto-detect` 模式中被忽略的问题 [#6690](https://github.com/tikv/pd/issues/6690) @[v01dstar](https://github.com/v01dstar) diff --git a/releases/release-6.6.0.md b/releases/release-6.6.0.md index 0989eaac8266..44293f979227 100644 --- a/releases/release-6.6.0.md +++ b/releases/release-6.6.0.md @@ -382,7 +382,7 @@ TiDB 版本:6.6.0-[DMR](/releases/versioning.md#开发里程碑版本) | TiDB | [`enable-telemetry`](/tidb-configuration-file.md#enable-telemetry-从-v402-版本开始引入) | 修改 | 自 v6.6.0 起,该配置项默认值由 `true` 改为 `false`,表示默认关闭 TiDB 的遥测功能。 | | TiKV | [`rocksdb.defaultcf.block-size`](/tikv-configuration-file.md#block-size) 和 [`rocksdb.writecf.block-size`](/tikv-configuration-file.md#block-size) | 修改 | 默认值由 `64K` 调整为 `32K`。 | | TiKV | [`rocksdb.defaultcf.block-cache-size`](/tikv-configuration-file.md#block-cache-size), [`rocksdb.writecf.block-cache-size`](/tikv-configuration-file.md#block-cache-size), [`rocksdb.lockcf.block-cache-size`](/tikv-configuration-file.md#block-cache-size) | 修改 | 从 v6.6.0 起,这三个配置项被废弃。详情参见 [#12936](https://github.com/tikv/tikv/issues/12936)。 | -| PD | [`enable-telemetry`](/pd-configuration-file.md#enable-telemetry) | 修改 | 从 v6.6.0 起,该配置项的默认值由 `true` 改为 `false`,表示默认关闭 TiDB Dasboard 的遥测功能。 | +| PD | [`enable-telemetry`](/pd-configuration-file.md#enable-telemetry) | 修改 | 从 v6.6.0 起,该配置项的默认值由 `true` 改为 `false`,表示默认关闭 TiDB Dashboard 的遥测功能。 | | TiFlash | [`profile.default.max_memory_usage_for_all_queries`](/tiflash/tiflash-configuration.md#配置文件-tiflashtoml) | 修改 | 表示所有查询过程中,节点对中间数据的内存限制。自 v6.6.0 起默认值由 `0` 改为 `0.8`,表示节点占总内存的 80%。 | | TiCDC | [`consistent.storage`](/ticdc/ticdc-sink-to-mysql.md#使用前提) | 修改 | redo log 备份文件的地址,除了 NFS,支持的 `scheme` 新增了 GCS 和 Azure。 | | DM | [`import-mode`](/dm/task-configuration-file-full.md) | 修改 | 该配置项的可选值由 `"sql"` 和 `"loader"` 变更为 `"logical"` 和 `"physical"`。默认值为 `"logical"`,即使用 TiDB Lightning 的逻辑导入模式进行导入。 | diff --git a/replicate-data-to-kafka.md b/replicate-data-to-kafka.md index 9cc835f8efaf..fe0c895f142d 100644 --- a/replicate-data-to-kafka.md +++ b/replicate-data-to-kafka.md @@ -32,7 +32,7 @@ aliases: ['/zh/tidb/dev/replicate-incremental-data-to-kafka/'] 2. 部署 Kafka 集群。 - - 实验环境,可以参考 [Apache Kakfa Quickstart](https://kafka.apache.org/quickstart) 启动 Kafka 集群。 + - 实验环境,可以参考 [Apache Kafka Quickstart](https://kafka.apache.org/quickstart) 启动 Kafka 集群。 - 生产环境,可以参考 [Running Kafka in Production](https://docs.confluent.io/platform/current/kafka/deployment.html) 完成 Kafka 集群搭建。 3. (可选)部署 Flink 集群。 diff --git a/role-based-access-control.md b/role-based-access-control.md index 02b2f908ef6f..309e5f0bdc2a 100644 --- a/role-based-access-control.md +++ b/role-based-access-control.md @@ -183,7 +183,7 @@ SET DEFAULT ROLE TO user [, user ] ``` -比如将 `app_read` 和 `app_wirte` 设置为 `rw_user1@localhost` 的默认启用角色: +比如将 `app_read` 和 `app_write` 设置为 `rw_user1@localhost` 的默认启用角色: {{< copyable "sql" >}} diff --git a/runtime-filter.md b/runtime-filter.md index 3104aaa4cc7a..f311ee47c404 100644 --- a/runtime-filter.md +++ b/runtime-filter.md @@ -67,7 +67,7 @@ Runtime Filter 的执行方式如下: | | filter data | | | | +-----+----v------+ +-------+--------+ - | TableFullScan | | TabelFullScan | + | TableFullScan | | TableFullScan | | store_sales | | date_dim | +-----------------+ +----------------+ ``` diff --git a/security-compatibility-with-mysql.md b/security-compatibility-with-mysql.md index c42b6836f551..44e94d925e0b 100644 --- a/security-compatibility-with-mysql.md +++ b/security-compatibility-with-mysql.md @@ -133,7 +133,7 @@ TiDB 目前支持的身份验证方式可在以下的表格中查找到。服务 ### `tidb_auth_token` -`tidb_auth_token` 是一种基于 [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) 的无密码认证方式。在 v6.4.0 中,`tidb_auth_token` 仅用于 TiDB Cloud 内部的用户认证,从 v6.5.0 起,你也可以将 `tidb_auth_token` 配置为 TiDB 自托管环境中用户的认证方式。不同于 `mysql_native_passsword`、`caching_sha2_password` 等使用密码的认证方式,`tidb_auth_token` 认证方式在创建用户时无需设置并保存自定义密码,在用户登录时只需使用一个签发的 token,从而简化用户的认证过程并提升安全性。 +`tidb_auth_token` 是一种基于 [JSON Web Token (JWT)](https://datatracker.ietf.org/doc/html/rfc7519) 的无密码认证方式。在 v6.4.0 中,`tidb_auth_token` 仅用于 TiDB Cloud 内部的用户认证,从 v6.5.0 起,你也可以将 `tidb_auth_token` 配置为 TiDB 自托管环境中用户的认证方式。不同于 `mysql_native_password`、`caching_sha2_password` 等使用密码的认证方式,`tidb_auth_token` 认证方式在创建用户时无需设置并保存自定义密码,在用户登录时只需使用一个签发的 token,从而简化用户的认证过程并提升安全性。 #### JWT diff --git a/sql-prepared-plan-cache.md b/sql-prepared-plan-cache.md index 858339d3657d..aef9dcbf1ecc 100644 --- a/sql-prepared-plan-cache.md +++ b/sql-prepared-plan-cache.md @@ -65,7 +65,7 @@ key 中任何一项变动(如切换数据库、重命名 `Prepare` 语句、 - 已经被缓存的计划不会受到统计信息更新、优化规则和表达式下推黑名单更新的影响,仍然会使用已经保存在缓存中的计划。 - 重启 TiDB 实例时(如不停机滚动升级 TiDB 集群),`Prepare` 信息会丢失,此时执行 `execute stmt ...` 可能会遇到 `Prepared Statement not found` 的错误,此时需要再执行一次 `prepare stmt ...`。 - 考虑到不同 `Execute` 的参数会不同,执行计划缓存为了保证适配性会禁止一些和具体参数值密切相关的激进查询优化手段,导致对特定的一些参数值,查询计划可能不是最优。比如查询的过滤条件为 `where a > ? and a < ?`,第一次 `Execute` 时参数分别为 2 和 1,考虑到这两个参数下次执行时可能会是 1 和 2,优化器不会生成对当前参数最优的 `TableDual` 执行计划。 -- 如果不考虑缓存失效和淘汰,一份执行计划缓存会对应各种不同的参数取值,理论上也会导致某些取值下执行计划非最优。比如查询过滤条件为 `where a < ?`,假如第一次执行 `Execute` 时用的参数值为 1,此时优化器生成最优的 `IndexScan` 执行计划放入缓存,在后续执行 `Exeucte` 时参数变为 10000,此时 `TableScan` 可能才是更优执行计划,但由于执行计划缓存,执行时还是会使用先前生成的 `IndexScan`。因此执行计划缓存更适用于查询较为简单(查询编译耗时占比较高)且执行计划较为固定的业务场景。 +- 如果不考虑缓存失效和淘汰,一份执行计划缓存会对应各种不同的参数取值,理论上也会导致某些取值下执行计划非最优。比如查询过滤条件为 `where a < ?`,假如第一次执行 `Execute` 时用的参数值为 1,此时优化器生成最优的 `IndexScan` 执行计划放入缓存,在后续执行 `Execute` 时参数变为 10000,此时 `TableScan` 可能才是更优执行计划,但由于执行计划缓存,执行时还是会使用先前生成的 `IndexScan`。因此执行计划缓存更适用于查询较为简单(查询编译耗时占比较高)且执行计划较为固定的业务场景。 自 v6.1.0 起,执行计划缓存功能默认打开,可以通过变量 [`tidb_enable_prepared_plan_cache`](/system-variables.md#tidb_enable_prepared_plan_cache-从-v610-版本开始引入) 启用或关闭这项功能。 diff --git a/sql-statements/sql-statement-drop-index.md b/sql-statements/sql-statement-drop-index.md index e465e61c30d2..101949fe48b6 100644 --- a/sql-statements/sql-statement-drop-index.md +++ b/sql-statements/sql-statement-drop-index.md @@ -103,7 +103,7 @@ Query OK, 0 rows affected (0.30 sec) ## 另请参阅 -* [SHOW INDEXS](/sql-statements/sql-statement-show-indexes.md) +* [SHOW INDEXES](/sql-statements/sql-statement-show-indexes.md) * [CREATE INDEX](/sql-statements/sql-statement-create-index.md) * [ADD INDEX](/sql-statements/sql-statement-add-index.md) * [RENAME INDEX](/sql-statements/sql-statement-rename-index.md) diff --git a/system-variables.md b/system-variables.md index a4948d2b4177..e20e70be33a3 100644 --- a/system-variables.md +++ b/system-variables.md @@ -4589,7 +4589,7 @@ Query OK, 0 rows affected, 1 warning (0.00 sec) - 分区表在开启[动态裁剪模式](/partitioned-table.md#动态裁剪模式)时,TiDB 会汇总各个分区的统计信息生成 GlobalStats。这个变量用于控制当分区统计信息缺失时生成 GlobalStats 的行为。 - 当开启该变量时,TiDB 生成 GlobalStats 时会跳过缺失的分区统计信息,不影响 GlobalStats 生成。 - - 当关闭该变量时,遇到缺失的分区统计信息,TiDB 会停止生成 GloablStats。 + - 当关闭该变量时,遇到缺失的分区统计信息,TiDB 会停止生成 GlobalStats。 ### `tidb_skip_utf8_check` diff --git a/ticdc/ticdc-faq.md b/ticdc/ticdc-faq.md index 49e6193ced23..1207e14c1f41 100644 --- a/ticdc/ticdc-faq.md +++ b/ticdc/ticdc-faq.md @@ -131,7 +131,7 @@ cdc cli changefeed create --server=http://127.0.0.1:8300 --sink-uri="kafka://127 ## TiCDC 把数据同步到 Kafka 时,能在 TiDB 中控制单条消息大小的上限吗? -对于 Avro 和 Canal-JSON 格式,消息是以行变更为单位发送的,一条 Kafka Message 仅包含一条行变更。一般情况下,消息的大小不会超过 Kafka 单条消息上限,因此,一般不需要限制单条消息大小。如果单条 Kafka 消息大小确实超过 Kakfa 上限,请参考[为什么 TiCDC 到 Kafka 的同步任务延时越来越大](/ticdc/ticdc-faq.md#为什么-ticdc-到-kafka-的同步任务延时越来越大)。 +对于 Avro 和 Canal-JSON 格式,消息是以行变更为单位发送的,一条 Kafka Message 仅包含一条行变更。一般情况下,消息的大小不会超过 Kafka 单条消息上限,因此,一般不需要限制单条消息大小。如果单条 Kafka 消息大小确实超过 Kafka 上限,请参考[为什么 TiCDC 到 Kafka 的同步任务延时越来越大](/ticdc/ticdc-faq.md#为什么-ticdc-到-kafka-的同步任务延时越来越大)。 对于 Open Protocol 格式,一条 Kafka Message 可能包含多条行变更。因此,有可能存在某条 Kafka Message 消息过大。可以通过 `max-message-bytes` 控制每次向 Kafka broker 发送消息的最大数据量(可选,默认值 10 MB),通过 `max-batch-size` 参数指定每条 kafka 消息中变更记录的最大数量(可选,默认值 `16`)。 diff --git a/time-to-live.md b/time-to-live.md index d6f2b6ff1862..1eaabec29e6a 100644 --- a/time-to-live.md +++ b/time-to-live.md @@ -184,7 +184,7 @@ TiDB 会定时采集 TTL 的运行时信息,并在 Grafana 中提供了相关 1 row in set (0.040 sec) ``` - 其中列 `table_id` 为分区表 ID,而 `parent_table_id` 为表的 ID,与 `infomation_schema.tables` 表中的 ID 对应。如果表不是分区表,则 `table_id` 与 `parent_table_id` 总是相等。 + 其中列 `table_id` 为分区表 ID,而 `parent_table_id` 为表的 ID,与 `information_schema.tables` 表中的 ID 对应。如果表不是分区表,则 `table_id` 与 `parent_table_id` 总是相等。 列 `{last, current}_job_{start_time, finish_time, ttl_expire}` 分别描述了过去和当前 TTL 任务的开始时间、结束时间和过期时间。`last_job_summary` 列描述了上一次 TTL 任务的执行情况,包括总行数、成功行数、失败行数。 @@ -210,7 +210,7 @@ TiDB 会定时采集 TTL 的运行时信息,并在 Grafana 中提供了相关 status: finished ``` - 其中列 `table_id` 为分区表 ID,而 `parent_table_id` 为表的 ID,与 `infomation_schema.tables` 表中的 ID 对应。`table_schema`、`table_name`、`partition_name` 分别对应表示数据库、表名、分区名。`create_time`、`finish_time`、`ttl_expire` 分别表示 TTL 任务的创建时间、结束时间和过期时间。`expired_rows` 与 `deleted_rows` 表示过期行数与成功删除的行数。 + 其中列 `table_id` 为分区表 ID,而 `parent_table_id` 为表的 ID,与 `information_schema.tables` 表中的 ID 对应。`table_schema`、`table_name`、`partition_name` 分别对应表示数据库、表名、分区名。`create_time`、`finish_time`、`ttl_expire` 分别表示 TTL 任务的创建时间、结束时间和过期时间。`expired_rows` 与 `deleted_rows` 表示过期行数与成功删除的行数。 ## TiDB 数据迁移工具兼容性 diff --git a/tispark-overview.md b/tispark-overview.md index 3b4708999d1c..e91d23da3d39 100644 --- a/tispark-overview.md +++ b/tispark-overview.md @@ -144,9 +144,9 @@ TiSpark 是 Spark 的第三方 jar 包,提供读写 TiKV 的能力。 ``` spark.sql.extensions org.apache.spark.sql.TiExtensions -spark.tispark.pd.addresses ${your_pd_adress} +spark.tispark.pd.addresses ${your_pd_address} spark.sql.catalog.tidb_catalog org.apache.spark.sql.catalyst.catalog.TiCatalog -spark.sql.catalog.tidb_catalog.pd.addresses ${your_pd_adress} +spark.sql.catalog.tidb_catalog.pd.addresses ${your_pd_address} ``` 启动 spark-shell: diff --git a/tiup/tiup-mirror-reference.md b/tiup/tiup-mirror-reference.md index 8a56371192f9..5c8b6fa17cee 100644 --- a/tiup/tiup-mirror-reference.md +++ b/tiup/tiup-mirror-reference.md @@ -153,7 +153,7 @@ TiUP 镜像是 TiUP 的组件仓库,存放了一系列的组件和这些组件 } }, "name": "{owner-name}", # 该属主的名字 - "threshod": {N} # 指示该属主拥有的组件必须含有至少 N 个合法签名 + "threshold": {N} # 指示该属主拥有的组件必须含有至少 N 个合法签名 }, ... "{ownerN}": { # 第 N 个属主的 ID From 8d8248743e7a365e3b4bab2b124cb0372622a140 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 29 Apr 2024 15:35:58 +0800 Subject: [PATCH 3/7] translate 8 EBNF related PRs (#17216) --- sql-statements/sql-statement-savepoint.md | 15 ++++ sql-statements/sql-statement-set-names.md | 41 +--------- .../sql-statement-show-columns-from.md | 78 ++++--------------- .../sql-statement-show-create-user.md | 13 ++-- sql-statements/sql-statement-show-grants.md | 36 +++------ sql-statements/sql-statement-show-profiles.md | 11 ++- .../sql-statement-show-stats-healthy.md | 27 +++---- sql-statements/sql-statement-unlock-stats.md | 2 +- 8 files changed, 67 insertions(+), 156 deletions(-) diff --git a/sql-statements/sql-statement-savepoint.md b/sql-statements/sql-statement-savepoint.md index 7728734bed8f..6c660d0f48c4 100644 --- a/sql-statements/sql-statement-savepoint.md +++ b/sql-statements/sql-statement-savepoint.md @@ -35,6 +35,19 @@ RELEASE SAVEPOINT identifier 当事务提交或者回滚后,事务中所有保存点都会被删除。 +## 语法图 + +```ebnf+diagram +SavepointStmt ::= + "SAVEPOINT" Identifier + +RollbackToStmt ::= + "ROLLBACK" "TO" "SAVEPOINT"? Identifier + +ReleaseSavepointStmt ::= + "RELEASE" "SAVEPOINT" Identifier +``` + ## 示例 创建表 `t1`: @@ -140,6 +153,8 @@ SELECT * FROM t1; 使用 `ROLLBACK TO SAVEPOINT` 语句将事物回滚到指定保存点时,MySQL 会释放该保存点之后才持有的锁,但在 TiDB 悲观事务中,不会立即释放该保存点之后才持有的锁,而是等到事务提交或者回滚时,才释放全部持有的锁。 +TiDB 不支持 MySQL 中的 `ROLLBACK WORK TO SAVEPOINT ...` 语法。 + ## 另请参阅 * [COMMIT](/sql-statements/sql-statement-commit.md) diff --git a/sql-statements/sql-statement-set-names.md b/sql-statements/sql-statement-set-names.md index 6f91043b3b18..171da4f2559b 100644 --- a/sql-statements/sql-statement-set-names.md +++ b/sql-statements/sql-statement-set-names.md @@ -10,38 +10,13 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-set-names/','/docs-cn/dev/r ## 语法图 -**SetNamesStmt:** - -![SetNamesStmt](/media/sqlgram/SetNamesStmt.png) - -**VariableAssignmentList:** - -![VariableAssignmentList](/media/sqlgram/VariableAssignmentList.png) - -**VariableAssignment:** - -![VariableAssignment](/media/sqlgram/VariableAssignment.png) - -**CharsetName:** - -![CharsetName](/media/sqlgram/CharsetName.png) - -**StringName:** - -![StringName](/media/sqlgram/StringName.png) - -**CharsetKw:** - -![CharsetKw](/media/sqlgram/CharsetKw.png) - -**CharsetNameOrDefault:** - -![CharsetNameOrDefault](/media/sqlgram/CharsetNameOrDefault.png) +```ebnf+diagram +SetNamesStmt ::= + "SET" ("NAMES" ("DEFAULT" | CharsetName ("COLLATE" ("DEFAULT" | CollationName))?) | ("CHARSET" | ("CHAR" | "CHARACTER") "SET") ("DEFAULT" | CharsetName)) +``` ## 示例 -{{< copyable "sql" >}} - ```sql SHOW VARIABLES LIKE 'character_set%'; ``` @@ -62,8 +37,6 @@ SHOW VARIABLES LIKE 'character_set%'; 8 rows in set (0.01 sec) ``` -{{< copyable "sql" >}} - ```sql SET NAMES utf8; ``` @@ -72,8 +45,6 @@ SET NAMES utf8; Query OK, 0 rows affected (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql SHOW VARIABLES LIKE 'character_set%'; ``` @@ -94,8 +65,6 @@ SHOW VARIABLES LIKE 'character_set%'; 8 rows in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql SET CHARACTER SET utf8mb4; ``` @@ -104,8 +73,6 @@ SET CHARACTER SET utf8mb4; Query OK, 0 rows affected (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql SHOW VARIABLES LIKE 'character_set%'; ``` diff --git a/sql-statements/sql-statement-show-columns-from.md b/sql-statements/sql-statement-show-columns-from.md index e58bf1d14464..210a6236903c 100644 --- a/sql-statements/sql-statement-show-columns-from.md +++ b/sql-statements/sql-statement-show-columns-from.md @@ -16,62 +16,30 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-show-columns-from/','/docs- ## 语法图 -**ShowStmt:** +```ebnf+diagram +ShowColumnsFromStmt ::= + "SHOW" "FULL"? ("COLUMNS" | "FIELDS") ("FROM" | "IN") TableName ( ("FROM" | "IN") SchemaName)? ShowLikeOrWhere? -![ShowStmt](/media/sqlgram/ShowStmt.png) +TableName ::= + (Identifier ".")? Identifier -**ShowColumnsFilterable:** - -![ShowColumnsFilterable](/media/sqlgram/ShowColumnsFilterable.png) - -**OptFull:** - -![OptFull](/media/sqlgram/OptFull.png) - -**FieldsOrColumns:** - -![FieldsOrColumns](/media/sqlgram/FieldsOrColumns.png) - -**ShowTableAliasOpt:** - -![ShowTableAliasOpt](/media/sqlgram/ShowTableAliasOpt.png) - -**FromOrIn:** - -![FromOrIn](/media/sqlgram/FromOrIn.png) - -**TableName:** - -![TableName](/media/sqlgram/TableName.png) - -**ShowDatabaseNameOpt:** - -![ShowDatabaseNameOpt](/media/sqlgram/ShowDatabaseNameOpt.png) - -**DBName:** - -![DBName](/media/sqlgram/DBName.png) - -**ShowLikeOrWhereOpt:** - -![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) +ShowLikeOrWhere ::= + "LIKE" SimpleExpr +| "WHERE" Expression +``` ## 示例 -{{< copyable "sql" >}} - ```sql -create view v1 as select 1; +CREATE VIEW v1 AS SELECT 1; ``` ``` Query OK, 0 rows affected (0.11 sec) ``` -{{< copyable "sql" >}} - ```sql -show columns from v1; +SHOW COLUMNS FROM v1; ``` ``` @@ -83,10 +51,8 @@ show columns from v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -desc v1; +DESC v1; ``` ``` @@ -98,10 +64,8 @@ desc v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -describe v1; +DESCRIBE v1; ``` ``` @@ -113,10 +77,8 @@ describe v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -explain v1; +EXPLAIN v1; ``` ``` @@ -128,10 +90,8 @@ explain v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -show fields from v1; +SHOW FIELDS FROM v1; ``` ``` @@ -143,10 +103,8 @@ show fields from v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -show full columns from v1; +SHOW FULL COLUMNS FROM v1 ``` ``` @@ -158,10 +116,8 @@ show full columns from v1; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql -show full columns from mysql.user; +SHOW FULL COLUMNS FROM mysql.user; ``` ``` diff --git a/sql-statements/sql-statement-show-create-user.md b/sql-statements/sql-statement-show-create-user.md index 0d2278010e35..24c74d3a78c7 100644 --- a/sql-statements/sql-statement-show-create-user.md +++ b/sql-statements/sql-statement-show-create-user.md @@ -10,13 +10,10 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-show-create-user/','/docs-c ## 语法图 -**ShowCreateUserStmt:** - -![ShowCreateUserStmt](/media/sqlgram/ShowCreateUserStmt.png) - -**Username:** - -![Username](/media/sqlgram/Username.png) +```ebnf+diagram +ShowCreateUserStmt ::= + "SHOW" "CREATE" "USER" (Username ("@" Hostname)? | "CURRENT_USER" ( "(" ")" )? ) +``` ## 示例 @@ -45,7 +42,7 @@ mysql> SHOW GRANTS FOR 'root'; ## MySQL 兼容性 -* `SHOW CREATE USER` 的输出结果旨在匹配 MySQL,但 TiDB 尚不支持若干 `CREATE` 选项。尚未支持的选项在语句执行过程中会被解析但会被跳过执行。详情可参阅 [security compatibility]。 +* `SHOW CREATE USER` 的输出结果旨在匹配 MySQL,但 TiDB 尚不支持若干 `CREATE` 选项。尚未支持的选项在语句执行过程中会被解析但会被跳过执行。详情可参阅[与 MySQL 安全特性差异](/security-compatibility-with-mysql.md)。 ## 另请参阅 diff --git a/sql-statements/sql-statement-show-grants.md b/sql-statements/sql-statement-show-grants.md index b551b51a1ab6..6fc459ca0304 100644 --- a/sql-statements/sql-statement-show-grants.md +++ b/sql-statements/sql-statement-show-grants.md @@ -10,30 +10,20 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-show-grants/','/docs-cn/dev ## 语法图 -**ShowGrantsStmt:** +```ebnf+diagram +ShowGrantsStmt ::= + "SHOW" "GRANTS" ("FOR" Username ("USING" RolenameList)?)? -![ShowGrantsStmt](/media/sqlgram/ShowGrantsStmt.png) +Username ::= + "CURRENT_USER" ( "(" ")" )? +| Username ("@" Hostname)? -**Username:** - -![Username](/media/sqlgram/Username.png) - -**UsingRoles:** - -![UsingRoles](/media/sqlgram/UsingRoles.png) - -**RolenameList:** - -![RolenameList](/media/sqlgram/RolenameList.png) - -**Rolename:** - -![Rolename](/media/sqlgram/Rolename.png) +RolenameList ::= + Rolename ("@" Hostname)? ("," Rolename ("@" Hostname)? )* +``` ## 示例 -{{< copyable "sql" >}} - ```sql SHOW GRANTS; ``` @@ -47,8 +37,6 @@ SHOW GRANTS; 1 row in set (0.00 sec) ``` -{{< copyable "sql" >}} - ```sql SHOW GRANTS FOR 'u1'; ``` @@ -57,8 +45,6 @@ SHOW GRANTS FOR 'u1'; ERROR 1141 (42000): There is no such grant defined for user 'u1' on host '%' ``` -{{< copyable "sql" >}} - ```sql CREATE USER u1; ``` @@ -67,8 +53,6 @@ CREATE USER u1; Query OK, 1 row affected (0.04 sec) ``` -{{< copyable "sql" >}} - ```sql GRANT SELECT ON test.* TO u1; ``` @@ -77,8 +61,6 @@ GRANT SELECT ON test.* TO u1; Query OK, 0 rows affected (0.04 sec) ``` -{{< copyable "sql" >}} - ```sql SHOW GRANTS FOR u1; ``` diff --git a/sql-statements/sql-statement-show-profiles.md b/sql-statements/sql-statement-show-profiles.md index e4200ee18f27..6ebcb7203068 100644 --- a/sql-statements/sql-statement-show-profiles.md +++ b/sql-statements/sql-statement-show-profiles.md @@ -10,14 +10,17 @@ aliases: ['/docs-cn/dev/sql-statements/sql-statement-show-profiles/'] ## 语法图 -**ShowStmt:** +```ebnf+diagram +ShowProfilesStmt ::= + "SHOW" "PROFILES" ShowLikeOrWhere? -![ShowStmt](/media/sqlgram/ShowStmt.png) +ShowLikeOrWhere ::= + "LIKE" SimpleExpr +| "WHERE" Expression +``` ## 示例 -{{< copyable "sql" >}} - ```sql SHOW PROFILES ``` diff --git a/sql-statements/sql-statement-show-stats-healthy.md b/sql-statements/sql-statement-show-stats-healthy.md index 991290e6e41a..30938f0a436d 100644 --- a/sql-statements/sql-statement-show-stats-healthy.md +++ b/sql-statements/sql-statement-show-stats-healthy.md @@ -7,27 +7,22 @@ summary: TiDB 数据库中 SHOW STATS_HEALTHY 的使用概况。 `SHOW STATS_HEALTHY` 语句可以预估统计信息的准确度,也就是健康度。健康度低的表可能会生成次优查询执行计划。 -可以通过执行 `ANALYZE` 表命令来改善表的健康度。当表的健康度下降到低于 [`tidb_auto_analyze_ratio`](/system-variables.md#tidb_auto_analyze_ratio) 时,则会自动执行 `ANALYZE` 命令。 +可以通过执行 [`ANALYZE`](/sql-statements/sql-statement-analyze-table.md) 语句来改善表的健康度。当表的健康度下降到低于 [`tidb_auto_analyze_ratio`](/system-variables.md#tidb_auto_analyze_ratio) 时,则会自动执行 `ANALYZE` 语句。 ## 语法图 -**ShowStmt** +```ebnf+diagram +ShowStatsHealthyStmt ::= + "SHOW" "STATS_HEALTHY" ShowLikeOrWhere? -![ShowStmt](/media/sqlgram/ShowStmt.png) - -**ShowTargetFilterable** - -![ShowTargetFilterable](/media/sqlgram/ShowTargetFilterable.png) - -**ShowLikeOrWhereOpt** - -![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) +ShowLikeOrWhere ::= + "LIKE" SimpleExpr +| "WHERE" Expression +``` ## 示例 -加载示例数据并运行 `ANALYZE` 命令: - -{{< copyable "sql" >}} +加载示例数据并运行 `ANALYZE` 语句: ```sql CREATE TABLE t1 ( @@ -48,8 +43,6 @@ ANALYZE TABLE t1; SHOW STATS_HEALTHY; # should be 100% healthy ``` -{{< copyable "sql" >}} - ```sql SHOW STATS_HEALTHY; ``` @@ -65,8 +58,6 @@ SHOW STATS_HEALTHY; 执行批量更新来删除大约 30% 的记录,然后检查统计信息的健康度: -{{< copyable "sql" >}} - ```sql DELETE FROM t1 WHERE id BETWEEN 101010 AND 201010; # delete about 30% of records SHOW STATS_HEALTHY; diff --git a/sql-statements/sql-statement-unlock-stats.md b/sql-statements/sql-statement-unlock-stats.md index c2d7486a57c5..01b8ea7c3a71 100644 --- a/sql-statements/sql-statement-unlock-stats.md +++ b/sql-statements/sql-statement-unlock-stats.md @@ -11,7 +11,7 @@ summary: TiDB 数据库中 UNLOCK STATS 的使用概况。 ```ebnf+diagram UnlockStatsStmt ::= - 'UNLOCK' 'STATS' (TableNameList) | (TableName 'PARTITION' PartitionNameList) + 'UNLOCK' 'STATS' (TableNameList | TableName 'PARTITION' PartitionNameList) TableNameList ::= TableName (',' TableName)* From 967a0fae95418a3e9c21b7d701b983fb7be189db Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 29 Apr 2024 16:16:29 +0800 Subject: [PATCH 4/7] translate 6 PRs for functions and operators (#17218) --- .../bit-functions-and-operators.md | 15 +++++++++++-- .../date-and-time-functions.md | 8 +++---- .../encryption-and-compression-functions.md | 12 ++++++++--- functions-and-operators/json-functions.md | 21 ++++++++++++------- functions-and-operators/locking-functions.md | 4 ++-- functions-and-operators/string-functions.md | 4 ++-- 6 files changed, 44 insertions(+), 20 deletions(-) diff --git a/functions-and-operators/bit-functions-and-operators.md b/functions-and-operators/bit-functions-and-operators.md index 93299ce5372b..ae13e9c539d8 100644 --- a/functions-and-operators/bit-functions-and-operators.md +++ b/functions-and-operators/bit-functions-and-operators.md @@ -1,12 +1,12 @@ --- title: 位函数和操作符 aliases: ['/docs-cn/dev/functions-and-operators/bit-functions-and-operators/','/docs-cn/dev/reference/sql/functions-and-operators/bit-functions-and-operators/'] -summary: TiDB 支持 MySQL 5.7 中的所有位函数和操作符,包括BIT_COUNT()、&、~、|、^、<<和>>。BIT_COUNT() 返回参数二进制表示中为 1 的个数,& 表示位与,~ 表示按位取反,| 表示位或,^ 表示位亦或,<< 表示左移,>> 表示右移。 +summary: TiDB 支持 MySQL 8.0 中的所有位函数和操作符。 --- # 位函数和操作符 -TiDB 支持使用 MySQL 5.7 中提供的所有[位函数和操作符](https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的所有[位函数和操作符](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html)。 **位函数和操作符表** @@ -19,3 +19,14 @@ TiDB 支持使用 MySQL 5.7 中提供的所有[位函数和操作符](https://de | [^](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_bitwise-xor) | 位亦或 | | [<<](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_left-shift) | 左移 | | [>>](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_right-shift) | 右移 | + +## MySQL 兼容性 + +在处理位函数和操作符时,MySQL 8.0 与之前版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.0 的行为。 + +## 已知问题 + +在以下情况中,TiDB 中的查询结果与 MySQL 5.7 相同,但与 MySQL 8.0 不同。 + +- 二进制参数的位操作。更多信息,请参考 [#30637](https://github.com/pingcap/tidb/issues/30637)。 +- `BIT_COUNT()` 函数的结果。更多信息,请参考 [#44621](https://github.com/pingcap/tidb/issues/44621)。 \ No newline at end of file diff --git a/functions-and-operators/date-and-time-functions.md b/functions-and-operators/date-and-time-functions.md index 22c57ae03626..e56ccb8a9edd 100644 --- a/functions-and-operators/date-and-time-functions.md +++ b/functions-and-operators/date-and-time-functions.md @@ -1,12 +1,12 @@ --- title: 日期和时间函数 aliases: ['/docs-cn/dev/functions-and-operators/date-and-time-functions/','/docs-cn/dev/reference/sql/functions-and-operators/date-and-time-functions/'] -summary: TiDB 支持 MySQL 5.7 中的所有日期和时间函数。但是 TiDB 可能无法完全匹配 MySQL 的行为,建议使用正确的日期格式。TiDB 支持 str_to_date() 函数,但无法解析所有日期和时间值。此外,TiDB 不支持特定的日期和时间格式化选项。系统变量 default_week_format 影响 WEEK() 函数。更多信息,请参见 GitHub Issue #30082。 +summary: TiDB 支持 MySQL 8.0 中的所有日期和时间函数。 --- # 日期和时间函数 -TiDB 支持使用 MySQL 5.7 中提供的所有[日期和时间函数](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的所有[日期和时间函数](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html)。 > **注意:** > @@ -80,7 +80,7 @@ TiDB 支持使用 MySQL 5.7 中提供的所有[日期和时间函数](https://de ## MySQL 兼容性 -TiDB 支持 `str_to_date()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: +TiDB 支持 `STR_TO_DATE()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: | 格式 | 说明 | |--------|---------------------------------------------------------------------------------------| @@ -99,4 +99,4 @@ TiDB 支持 `str_to_date()` 函数,但是无法解析所有的日期和时间 ## 相关系统变量 -`default_week_format` 变量影响 `WEEK()` 函数。 +[`default_week_format`](/system-variables.md#default_week_format) 变量影响 `WEEK()` 函数。 diff --git a/functions-and-operators/encryption-and-compression-functions.md b/functions-and-operators/encryption-and-compression-functions.md index 27557c9ed21c..69f99c66576d 100644 --- a/functions-and-operators/encryption-and-compression-functions.md +++ b/functions-and-operators/encryption-and-compression-functions.md @@ -1,12 +1,12 @@ --- title: 加密和压缩函数 aliases: ['/docs-cn/dev/functions-and-operators/encryption-and-compression-functions/','/docs-cn/dev/reference/sql/functions-and-operators/encryption-and-compression-functions/'] -summary: TiDB 支持大部分 MySQL 5.7 中提供的加密和压缩函数,包括MD5、PASSWORD、RANDOM_BYTES、SHA1、SHA2、AES_DECRYPT、AES_ENCRYPT、COMPRESS、UNCOMPRESS、UNCOMPRESSED_LENGTH 和 VALIDATE_PASSWORD_STRENGTH。相关系统变量 block_encryption_mode 用于设置 AES_ENCRYPT 和 AES_DECRYPT 的加密模式。不支持的函数包括 DES_DECRYPT、DES_ENCRYPT、OLD_PASSWORD 和 ENCRYPT,以及仅在 MySQL 企业版中支持的函数。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分加密和压缩函数。 --- # 加密和压缩函数 -TiDB 支持使用 MySQL 5.7 中提供的大部分[加密和压缩函数](https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的大部分[加密和压缩函数](https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html)。 ## 支持的函数 @@ -27,9 +27,15 @@ TiDB 支持使用 MySQL 5.7 中提供的大部分[加密和压缩函数](https:/ ## 相关系统变量 -`block_encryption_mode` 变量设置 `AES_ENCRYPT()` 和 `AES_DECRYPT()` 所使用的加密模式。 +* [`block_encryption_mode`](/system-variables.md#block_encryption_mode) 变量设置 `AES_ENCRYPT()` 和 `AES_DECRYPT()` 所使用的加密模式。 + +* [`validate_password.*`](/system-variables.md) 变量影响 `VALIDATE_PASSWORD_STRENGTH()` 函数的行为。 ## 不支持的函数 * `DES_DECRYPT()`、`DES_ENCRYPT()`、`OLD_PASSWORD()` 和 `ENCRYPT()`:这些函数在 MySQL 5.7 中被废弃,并且已在 MySQL 8.0 中移除。 * 只在 MySQL 企业版中支持的函数。见 [Issue #2632](https://github.com/pingcap/tidb/issues/2632)。 + +## MySQL 兼容性 + +* TiDB 不支持 `STATEMENT_DIGEST()` 和 `STATEMENT_DIGEST_TEXT()` 函数。 diff --git a/functions-and-operators/json-functions.md b/functions-and-operators/json-functions.md index c55d4a413f51..2f55c3aa5386 100644 --- a/functions-and-operators/json-functions.md +++ b/functions-and-operators/json-functions.md @@ -1,12 +1,12 @@ --- title: JSON 函数 aliases: ['/docs-cn/dev/functions-and-operators/json-functions/','/docs-cn/dev/reference/sql/functions-and-operators/json-functions/'] -summary: TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数,包括创建、搜索、修改、返回属性和效用函数。这些函数可用于处理 JSON 值,如创建 JSON 文档、搜索 JSON 文档中的值、修改 JSON 文档、返回 JSON 值属性和聚合函数。此外,还有其他相关函数可供参考。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分 JSON 函数。 --- # JSON 函数 -TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 +TiDB 支持 MySQL 8.0 中提供的大部分 [JSON 函数](https://dev.mysql.com/doc/refman/8.0/en/json-functions.html)。 ## 创建 JSON 值的函数 @@ -35,18 +35,16 @@ TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 | 函数 | 功能描述 | | --------------------------------- | ----------- | | [JSON_APPEND(json_doc, path, value)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-append) | `JSON_ARRAY_APPEND` 的别名 | -| [JSON_ARRAY_APPEND(json_doc, path, value)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值追加到指定路径的 JSON 数组的末尾 | -| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将数组插入 JSON 文档,并返回修改后的文档 | +| [JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值添加到 JSON 文档指定数组的末尾,并返回添加结果 | +| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档中的指定位置并返回结果 | | [JSON_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-insert) | 在 JSON 文档中在某一路径下插入子文档 | -| [JSON_MERGE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge) | 已废弃的 `JSON_MERGE_PRESERVE` 别名 | | [JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-patch) | 合并 JSON 文档 | | [JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-preserve) | 将两个或多个 JSON 文档合并成一个文档,并返回合并结果 | +| [JSON_MERGE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge) | 已废弃,`JSON_MERGE_PRESERVE` 的别名 | | [JSON_REMOVE(json_doc, path[, path] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-remove) | 移除 JSON 文档中某一路径下的子文档 | | [JSON_REPLACE(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-replace) | 替换 JSON 文档中的某一路径下的子文档 | | [JSON_SET(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-set) | 在 JSON 文档中为某一路径设置子文档 | | [JSON_UNQUOTE(json_val)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-unquote) | 去掉 JSON 值外面的引号,返回结果为字符串 | -| [JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值添加到 JSON 文档指定数组的末尾,并返回添加结果 | -| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档的指定位置,并返回插入结果 | ## 返回 JSON 值属性的函数 @@ -76,3 +74,12 @@ TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 * [JSON Function Reference](https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html) * [JSON Data Type](/data-type-json.md) + +## 不支持的函数 + +- `JSON_SCHEMA_VALID()` +- `JSON_SCHEMA_VALIDATION_REPORT()` +- `JSON_TABLE()` +- `JSON_VALUE()` + +更多信息,请参考 [#14486](https://github.com/pingcap/tidb/issues/14486)。 \ No newline at end of file diff --git a/functions-and-operators/locking-functions.md b/functions-and-operators/locking-functions.md index 435c21e251b6..530fb01ff94e 100644 --- a/functions-and-operators/locking-functions.md +++ b/functions-and-operators/locking-functions.md @@ -5,7 +5,7 @@ summary: 了解 TiDB 中的用户级锁函数。 # 锁函数 -TiDB 支持 MySQL 5.7 中的大部分用户级[锁函数](https://dev.mysql.com/doc/refman/5.7/en/locking-functions.html)。 +TiDB 支持 MySQL 8.0 中的大部分用户级[锁函数](https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html)。 ## 支持的函数 @@ -20,6 +20,6 @@ TiDB 支持 MySQL 5.7 中的大部分用户级[锁函数](https://dev.mysql.com/ ## MySQL 兼容性 * TiDB 允许的最短超时时间为 1 秒,最长超时时间为 1 小时(即 3600 秒)。而 MySQL 允许最短 0 秒和最长无限超时(`timeout=-1`)。TiDB 会自动将超出范围的值转换为最接近的允许值,`timeout=-1` 会被转换为 3600 秒。 -* TiDB 不会自动检测用户级锁导致的死锁。死锁会话将在 1 小时内超时,但你也可以在任一受影响的会话上使用 `KILL` 语句手动终止死锁。你还可以通过始终用相同顺序获取用户级锁的方法来防止死锁。 +* TiDB 不会自动检测用户级锁导致的死锁。死锁会话将在 1 小时内超时,但你也可以在任一受影响的会话上使用 [`KILL`](/sql-statements/sql-statement-kill.md) 语句手动终止死锁。你还可以通过始终用相同顺序获取用户级锁的方法来防止死锁。 * 在 TiDB 中,锁对集群中所有 TiDB 服务器生效。而在 MySQL Cluster 和 Group Replication 中,锁只对本地单个服务器生效。 * 如果从另一个会话调用 `IS_USED_LOCK()` 并且无法返回持有锁的进程 ID,则返回 `1`。 diff --git a/functions-and-operators/string-functions.md b/functions-and-operators/string-functions.md index 0dcf4da6819b..b0257e439c58 100644 --- a/functions-and-operators/string-functions.md +++ b/functions-and-operators/string-functions.md @@ -1,12 +1,12 @@ --- title: 字符串函数 aliases: ['/docs-cn/dev/functions-and-operators/string-functions/','/docs-cn/dev/reference/sql/functions-and-operators/string-functions/','/docs-cn/dev/sql/string-functions/'] -summary: TiDB 支持大部分 MySQL 5.7 和部分 MySQL 8.0 字符串函数,以及部分 Oracle 21 函数。不支持的函数包括 LOAD_FILE()、MATCH() 和 SOUNDEX()。正则函数与 MySQL 的语法和数据类型存在一些差异,需要注意。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分字符串函数以及 Oracle 21 中提供的部分函数。 --- # 字符串函数 -TiDB 支持使用大部分 MySQL 5.7 中提供的[字符串函数](https://dev.mysql.com/doc/refman/5.7/en/string-functions.html)、一部分 MySQL 8.0 中提供的[字符串函数](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html)和一部分 Oracle 21 所提供的[函数](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlqr/SQL-Functions.html#GUID-93EC62F8-415D-4A7E-B050-5D5B2C127009)。 +TiDB 支持使用 MySQL 8.0 中提供的大部分[字符串函数](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html)以及 Oracle 21 中提供的部分[函数](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlqr/SQL-Functions.html#GUID-93EC62F8-415D-4A7E-B050-5D5B2C127009)。 关于 Oracle 函数和 TiDB 函数的对照关系,请参考 [Oracle 与 TiDB 函数和语法差异对照](/oracle-functions-to-tidb.md)。 From c719636820f15560767aacbca59260f295843dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:35:33 +0800 Subject: [PATCH 5/7] grafana: explained metrics in log backup row (#17227) --- grafana-tikv-dashboard.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/grafana-tikv-dashboard.md b/grafana-tikv-dashboard.md index 4496bc273d48..a34c45fcde45 100644 --- a/grafana-tikv-dashboard.md +++ b/grafana-tikv-dashboard.md @@ -456,6 +456,41 @@ aliases: ['/docs-cn/dev/grafana-tikv-dashboard/','/docs-cn/dev/reference/key-mon - Encrypt/decrypt data nanos:每次加密/解密数据的耗时的直方图 - Read/write encryption meta duration:每秒钟读写加密文件所耗费的时间 +### Log Backup + +- Handle Event Rate:处理写入事件的速度。 +- Initial Scan Generate Event Throughput:创建新的监听流时,增量扫描的速度。 +- Abnormal Checkpoint TS Lag:各个任务当前 Checkpoint TS 到现在时间的 Lag。 +- Memory Of Events:增量扫描产生的临时数据占用内存的估计值。 +- Observed Region Count:目前监听的 Region 数量。 +- Errors:可重试、非致命错误的数量及类型。 +- Fatal Errors:致命错误的数量及类型。通常致命错误会导致任务暂停。 +- Checkpoint TS of Tasks:各个任务的 Checkpoint TS。 +- Flush Duration:将缓存数据移动到外部存储的耗时的热力图。 +- Initial Scanning Duration:创建新的监听流时,增量扫描的耗时的热力图。 +- Convert Raft Event Duration:创建监听流后,转化 Raft 日志项为备份数据的耗时的热力图。 +- Command Batch Size:监听到的 Raft Command 的 Batch 大小(单个 Raft Group 内)。 +- Save to Temp File Duration:将一批备份数据(跨越数个 Task)暂存到临时文件区的耗时的热力图。 +- Write to Temp File Duration:将一批备份数据(来自某个 Task)暂存到临时文件区的耗时的热力图。 +- System Write Call Duration:将一批备份数据(来自某个 Region)写入到临时文件耗时的热力图。 +- Internal Message Type:TiKV 内部负责日志备份的 Actor 收到的消息的类型。 +- Internal Message Handling Duration (P90|P99):消费、处理各个类型消息的速度。 +- Initial Scan RocksDB Throughput:增量扫描过程中,RocksDB 内部记录产生的读流量。 +- Initial Scan RocksDB Operation:增量扫描过程中,RocksDB 内部记录的各个操作的数量。 +- Initial Scanning Trigger Reason:触发增量扫描的原因。 +- Region Checkpoint Key Putting:向 PD 记录 Checkpoint 的操作的数量。 + +> **注意:** +> +> 以下这些监控指标的数据源都是 TiDB 节点,但是对日志备份流程有一些影响。因此,为了方便查阅,将其放在了 **TiKV Details** 面板中。大部分时候 TiKV 会主动“推送”进度,但以下部分监控偶尔没有数据采样也属于正常现象。 + +- Request Checkpoint Batch Size:日志备份协调器请求各个 TiKV 的 Checkpoint 信息时的请求攒批大小。 +- Tick Duration \[P99|P90\]:协调器内部 Tick 的耗时。 +- Region Checkpoint Failure Reason:协调器内部无法推进某个 Region Checkpoint 的原因。 +- Request Result:协调器推进 Region Checkpoint 的成功或失败的记录。 +- Get Region Operation Count:协调器向 PD 请求 Region 信息的次数。 +- Try Advance Trigger Time:协调器尝试推进 Checkpoint 的耗时。 + ### 面板常见参数的解释 #### gRPC 消息类型 From fd98be489039cc7b2980eb24c21e9fedac4aae4c Mon Sep 17 00:00:00 2001 From: lhy1024 Date: Tue, 30 Apr 2024 16:52:03 +0800 Subject: [PATCH 6/7] fix pd cert allowed cn description (#17259) --- enable-tls-between-components.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/enable-tls-between-components.md b/enable-tls-between-components.md index 8669780dbe32..c93a2b25968e 100644 --- a/enable-tls-between-components.md +++ b/enable-tls-between-components.md @@ -139,16 +139,17 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec 如希望进行组件调用者身份认证,需要在生证书时通过 `Common Name` 标识证书使用者身份,并在被调用者配置检查证书 `Common Name` 列表来检查调用者身份。 +> **注意:** +> +> 目前 PD 的 `cert-allowed-cn` 配置项只能设置一个值。因此所有认证对象的 `commonName` 都要设置成同一个值。 + - TiDB 在 `config` 文件或命令行参数中设置: ```toml [security] - cluster-verify-cn = [ - "TiDB-Server", - "TiKV-Control", - ] + cluster-verify-cn = ["TiDB"] ``` - TiKV @@ -157,9 +158,7 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec ```toml [security] - cert-allowed-cn = [ - "TiDB-Server", "PD-Server", "TiKV-Control", "RawKvClient1", - ] + cert-allowed-cn = ["TiDB"] ``` - PD @@ -168,7 +167,7 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec ```toml [security] - cert-allowed-cn = ["TiKV-Server", "TiDB-Server", "PD-Control"] + cert-allowed-cn = ["TiDB"] ``` - TiFlash(从 v4.0.5 版本开始引入) @@ -177,14 +176,14 @@ aliases: ['/docs-cn/dev/enable-tls-between-components/','/docs-cn/dev/how-to/sec ```toml [security] - cert_allowed_cn = ["TiKV-Server", "TiDB-Server"] + cert_allowed_cn = ["TiDB"] ``` 在 `tiflash-learner.toml` 文件中设置: ```toml [security] - cert-allowed-cn = ["PD-Server", "TiKV-Server", "TiFlash-Server"] + cert-allowed-cn = ["TiDB"] ``` ## 证书重新加载 From 705405a595954002fed75e5422835ef6f1827ff1 Mon Sep 17 00:00:00 2001 From: Aolin Date: Mon, 6 May 2024 15:34:07 +0800 Subject: [PATCH 7/7] v8.0: update Rust version for compiling and running TiDB to nightly-2023-12-28 (#17266) --- hardware-and-software-requirements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware-and-software-requirements.md b/hardware-and-software-requirements.md index f1fd79eb54c9..63b29fd58987 100644 --- a/hardware-and-software-requirements.md +++ b/hardware-and-software-requirements.md @@ -49,7 +49,7 @@ TiDB 作为一款开源一栈式实时 HTAP 数据库,可以很好地部署和 | 编译和构建 TiDB 所需的依赖库 | 版本 | | :--- | :--- | | Golang | 1.21 及以上版本 | -| Rust | nightly-2022-07-31 及以上版本 | +| Rust | nightly-2023-12-28 及以上版本 | | GCC | 7.x | | LLVM | 13.0 及以上版本 |