diff --git a/basic-features.md b/basic-features.md index f60bf7426c2b..8a0f22497c89 100644 --- a/basic-features.md +++ b/basic-features.md @@ -174,7 +174,6 @@ aliases: ['/docs-cn/dev/basic-features/','/docs-cn/dev/experimental-features-4.0 | [扩展统计信息](/extended-statistics.md) | E | E | E | E | E | E | E | E | E | | 统计反馈 | N | N | N | N | 已废弃 | 已废弃 | E | E | E | | [统计信息自动更新](/statistics.md#自动更新) | Y | Y | Y | Y | Y | Y | Y | Y | Y | -| [快速分析](/system-variables.md#tidb_enable_fast_analyze) | 已废弃 | 已废弃 | E | E | E | E | E | E | E | | [动态裁剪](/partitioned-table.md#动态裁剪模式) | Y | Y | Y | Y | Y | E | E | E | E | | [收集部分列的统计信息](/statistics.md#收集部分列的统计信息) | E | E | E | E | E | E | N | N | N | | [限制统计信息的内存使用量](/statistics.md#统计信息收集的内存限制) | E | E | E | E | E | N | N | N | N | diff --git a/best-practices/uuid.md b/best-practices/uuid.md index 4606f8515d63..ab4bd2e15984 100644 --- a/best-practices/uuid.md +++ b/best-practices/uuid.md @@ -7,17 +7,17 @@ summary: 了解在 TiDB 中使用 UUID 的最佳实践和策略。 ## UUID 概述 -通用唯一标识符(UUID)用作主键而不是 `AUTO_INCREMENT` 整数值时,可以提供以下好处: +通用唯一标识符 (UUID) 用作主键而不是 [`AUTO_INCREMENT`](/auto-increment.md) 整数值时,可以提供以下好处: - UUID 可以在多个系统生成,而不会产生冲突。某些情况下可以减少到 TiDB 的网络往返次数,从而提高性能。 - 绝大多数编程语言和数据库系统都支持 UUID。 -- 用在 URL 中时,UUID 不容易被枚举攻击。相比之下,使用 `auto_increment` 数字,则很容易让发票 ID 或用户 ID 被猜出。 +- 用在 URL 中时,UUID 不容易被枚举攻击。相比之下,使用 `AUTO_INCREMENT` 数字,则很容易让发票 ID 或用户 ID 被猜出。 ## 最佳实践 ### 二进制存储 -UUID 文本是一个包含 36 字符的字符串,如 `ab06f63e-8fe7-11ec-a514-5405db7aad56`。使用 `UUID_TO_BIN()` 可将 UUID 文本格式转换为 16 字节的二进制格式。这样,你可以将文本存储在 `BINARY(16)` 列中。检索 UUID 时,可以使用 `BIN_TO_UUID()` 函数再将其转换回文本格式。 +UUID 文本是一个包含 36 字符的字符串,如 `ab06f63e-8fe7-11ec-a514-5405db7aad56`。使用 [`UUID_TO_BIN()`](/functions-and-operators/miscellaneous-functions.md#uuid_to_bin) 可将 UUID 文本格式转换为 16 字节的二进制格式。这样,你可以将文本存储在 [`BINARY(16)`](/data-type-string.md#binary-类型) 列中。检索 UUID 时,可以使用 [`BIN_TO_UUID()`](/functions-and-operators/miscellaneous-functions.md#bin_to_uuid) 函数再将其转换回文本格式。 ### UUID 格式二进制顺序和聚簇主键 diff --git a/br/br-incremental-guide.md b/br/br-incremental-guide.md index 7ad31379a4c6..db50479c2241 100644 --- a/br/br-incremental-guide.md +++ b/br/br-incremental-guide.md @@ -11,6 +11,12 @@ TiDB 集群增量数据包含在某个时间段的起始和结束两个快照的 > > 当前该功能已经停止开发迭代,推荐你选择[日志备份与恢复功能](/br/br-pitr-guide.md)代替。 +## 使用限制 + +由于增量备份的恢复依赖于备份时间点的库表快照来过滤增量 DDL,因此对于增量备份过程中删除的表,在恢复后可能仍然存在,需要手动删除。 + +增量备份尚不支持批量重命名表的操作。如果在增量备份过程中发生了批量重命名表的操作,则有可能造成恢复失败。建议在批量重命名表后进行一次全量备份,并在恢复时使用最新的全量备份替代增量数据。 + ## 对集群进行增量备份 使用 `tiup br backup` 进行增量备份只需要指定**上一次的备份时间戳** `--lastbackupts`,br 命令行工具会判定需要备份 `lastbackupts` 和当前时间之间增量数据。使用 `validate` 指令获取上一次备份的时间戳,示例如下: diff --git a/br/br-snapshot-guide.md b/br/br-snapshot-guide.md index 1ab2321c4d4c..0c3f3d4c0ec6 100644 --- a/br/br-snapshot-guide.md +++ b/br/br-snapshot-guide.md @@ -175,13 +175,11 @@ tiup br restore full \ +-----------------------------------------------------+ ``` -当恢复系统权限相关数据的时候,请注意: +当恢复系统权限相关数据的时候,请注意:在恢复数据前 BR 会检查目标集群的系统表是否跟备份数据中的系统表兼容。这里的兼容是指满足以下所有条件: -- 在 v7.6.0 之前版本中,BR 无法恢复 `user` 为 `cloud_admin` 并且 `host` 为 `'%'` 的用户数据,该用户是 TiDB Cloud 预留用户。从 v7.6.0 开始,BR 默认支持恢复包括 `cloud_admin` 在内的所有用户数据。 -- 在恢复数据前 BR 会检查目标集群的系统表是否跟备份数据中的系统表兼容。这里的兼容是指满足以下所有条件: - - 目标集群需要存在备份中的系统权限表。 - - 目标集群系统权限表**列数**需要与备份数据中一致,列的顺序可以有差异。 - - 目标集群系统权限表的列需要与备份数据兼容。如果为带长度类型(包括整型、字符串等类型),前者长度需大于或等于后者,如果为 `ENUM` 类型,则应该为后者超集。 +- 目标集群需要存在备份中的系统权限表。 +- 目标集群系统权限表**列数**需要与备份数据中一致,列的顺序可以有差异。 +- 目标集群系统权限表的列需要与备份数据兼容。如果为带长度类型(包括整型、字符串等类型),前者长度需大于或等于后者,如果为 `ENUM` 类型,则应该为后者超集。 ## 性能与影响 diff --git a/functions-and-operators/tidb-functions.md b/functions-and-operators/tidb-functions.md index d5148d1e567c..279e546f07d4 100644 --- a/functions-and-operators/tidb-functions.md +++ b/functions-and-operators/tidb-functions.md @@ -312,12 +312,14 @@ select tidb_decode_sql_digests(@digests, 10); SET GLOBAL tidb_enable_row_level_checksum = ON; ``` +上述配置仅对新创建的会话生效,因此需要重新连接 TiDB。 + 创建表 `t` 并插入数据: ```sql USE test; -CREATE TABLE t (id INT PRIMARY KEY, k INT, c int); -INSERT INTO TABLE t values (1, 10, a); +CREATE TABLE t (id INT PRIMARY KEY, k INT, c CHAR(1)); +INSERT INTO t values (1, 10, 'a'); ``` 查询表 `t` 中 `id = 1` 的行数据的 Checksum 值: diff --git a/hardware-and-software-requirements.md b/hardware-and-software-requirements.md index 63b29fd58987..f0ed73a0df33 100644 --- a/hardware-and-software-requirements.md +++ b/hardware-and-software-requirements.md @@ -23,6 +23,7 @@ TiDB 作为一款开源一栈式实时 HTAP 数据库,可以很好地部署和 | Red Hat Enterprise Linux 8.4 及以上的 8.x 版本 | | | | | | Amazon Linux 2 | | +| Amazon Linux 2023 | | | Rocky Linux 9.1 及以上的版本 | | | 麒麟欧拉版 V10 SP1/SP2 | | | 统信操作系统 (UOS) V20 | | diff --git a/information-schema/information-schema-tikv-region-status.md b/information-schema/information-schema-tikv-region-status.md index de90c4f34a74..5ff6300d5396 100644 --- a/information-schema/information-schema-tikv-region-status.md +++ b/information-schema/information-schema-tikv-region-status.md @@ -8,13 +8,13 @@ aliases: ['/docs-cn/dev/information-schema/information-schema-tikv-region-status `TIKV_REGION_STATUS` 表通过 PD 的 API 展示 TiKV Region 的基本信息,比如 Region ID、开始和结束键值以及读写流量。 -{{< copyable "sql" >}} - ```sql -USE information_schema; -DESC tikv_region_status; +USE INFORMATION_SCHEMA; +DESC TIKV_REGION_STATUS; ``` +输出结果如下: + ```sql +---------------------------+-------------+------+------+---------+-------+ | Field | Type | Null | Key | Default | Extra | @@ -28,6 +28,9 @@ DESC tikv_region_status; | IS_INDEX | tinyint(1) | NO | | 0 | | | INDEX_ID | bigint(21) | YES | | NULL | | | INDEX_NAME | varchar(64) | YES | | NULL | | +| IS_PARTITION | tinyint(1) | NO | | 0 | | +| PARTITION_ID | bigint(21) | YES | | NULL | | +| PARTITION_NAME | varchar(64) | YES | | NULL | | | EPOCH_CONF_VER | bigint(21) | YES | | NULL | | | EPOCH_VERSION | bigint(21) | YES | | NULL | | | WRITTEN_BYTES | bigint(21) | YES | | NULL | | @@ -37,7 +40,7 @@ DESC tikv_region_status; | REPLICATIONSTATUS_STATE | varchar(64) | YES | | NULL | | | REPLICATIONSTATUS_STATEID | bigint(21) | YES | | NULL | | +---------------------------+-------------+------+------+---------+-------+ -17 rows in set (0.00 sec) +20 rows in set (0.00 sec) ``` `TIKV_REGION_STATUS` 表中列的含义如下: @@ -51,6 +54,9 @@ DESC tikv_region_status; * `IS_INDEX`:Region 数据是否是索引,0 代表不是索引,1 代表是索引。如果当前 Region 同时包含表数据和索引数据,会有多行记录,`IS_INDEX` 分别是 0 和 1。 * `INDEX_ID`:Region 所属的索引的 ID。如果 `IS_INDEX` 为 0,这一列的值就为 NULL。 * `INDEX_NAME`:Region 所属的索引的名称。如果 `IS_INDEX` 为 0,这一列的值就为 NULL。 +* `IS_PARTITION`:Region 所属的表是否为分区表。 +* `PARTITION_ID`:如果 Region 所属的表为分区表,显示 Region 所属的分区的 ID。 +* `PARTITION_NAME`:如果 Region 所属的表为分区表,显示 Region 所属的分区的名字。 * `EPOCH_CONF_VER`:Region 的配置的版本号,在增加或减少 peer 时版本号会递增。 * `EPOCH_VERSION`:Region 的当前版本号,在分裂或合并时版本号会递增。 * `WRITTEN_BYTES`:已经往 Region 写入的数据量 (bytes)。 diff --git a/migrate-from-csv-files-to-tidb.md b/migrate-from-csv-files-to-tidb.md index 806bd9497ee5..84ee85a669a5 100644 --- a/migrate-from-csv-files-to-tidb.md +++ b/migrate-from-csv-files-to-tidb.md @@ -61,6 +61,8 @@ data-source-dir = "${data-path}" # 本地或 S3 路径,例如:'s3://my-bucke separator = ',' # 引用定界符,可以为零或多个字符。 delimiter = '"' +# 行结束符。默认将 \r、\n、\r\n 都作为行结束符处理。 +# terminator = "\r\n" # CSV 文件是否包含表头。 # 如果为 true,则 lightning 会使用首行内容解析字段的对应关系。 header = true @@ -102,6 +104,8 @@ pd-addr = "${ip}:${port}" # 集群 PD 的地址,Lightning 通过 PD 获取 - delimiter 为空; - 每个字段不包含 CR (\\r)或 LF(\\n)。 +严格格式 `strict-format` 的 CSV 文件需要显式指定行结束符 `terminator`。 + 如果你确认满足条件,可按如下配置开启 `strict-format` 模式以加快导入速度。 ```toml diff --git a/optimizer-hints.md b/optimizer-hints.md index f1598470b39b..44d6388d941f 100644 --- a/optimizer-hints.md +++ b/optimizer-hints.md @@ -134,6 +134,10 @@ SELECT /*+ NO_MERGE_JOIN(t1, t2) */ * FROM t1, t2 WHERE t1.id = t2.id; ### INL_JOIN(t1_name [, tl_name ...]) +> **注意:** +> +> 部分情况下 `INL_JOIN` Hint 可能无法生效,详情请参阅 [`INL_JOIN` Hint 不生效](#inl_join-hint-不生效)。 + `INL_JOIN(t1_name [, tl_name ...])` 提示优化器对指定表使用 Index Nested Loop Join 算法。这个算法可能会在某些场景更快,消耗更少系统资源,有的场景会更慢,消耗更多系统资源。对于外表经过 WHERE 条件过滤后结果集较小(小于 1 万行)的场景,可以尝试使用。例如: {{< copyable "sql" >}} @@ -939,7 +943,74 @@ Warning 信息如下: 在上面的示例中,你需要将 Hint 直接放在 `SELECT` 关键字之后。具体的语法规则参见 [Hint 语法](#语法)部分。 -### 排序规则不兼容导致 `INL_JOIN` Hint 不生效 +### `INL_JOIN` Hint 不生效 + +#### 关联表的列上使用内置函数导致 `INL_JOIN` Hint 不生效 + +在某些情况下,如果在关联表的列上使用了内置函数,优化器可能无法选择 `IndexJoin` 计划,导致 `INL_JOIN` Hint 也无法生效。 + +例如,以下查询在关联表的列 `tname` 上使用了内置函数 `substr`: + +```sql +CREATE TABLE t1 (id varchar(10) primary key, tname varchar(10)); +CREATE TABLE t2 (id varchar(10) primary key, tname varchar(10)); +EXPLAIN SELECT /*+ INL_JOIN(t1, t2) */ * FROM t1, t2 WHERE t1.id=t2.id and SUBSTR(t1.tname,1,2)=SUBSTR(t2.tname,1,2); +``` + +查询计划输出结果如下: + +```sql ++------------------------------+----------+-----------+---------------+-----------------------------------------------------------------------+ +| id | estRows | task | access object | operator info | ++------------------------------+----------+-----------+---------------+-----------------------------------------------------------------------+ +| HashJoin_12 | 12500.00 | root | | inner join, equal:[eq(test.t1.id, test.t2.id) eq(Column#5, Column#6)] | +| ├─Projection_17(Build) | 10000.00 | root | | test.t2.id, test.t2.tname, substr(test.t2.tname, 1, 2)->Column#6 | +| │ └─TableReader_19 | 10000.00 | root | | data:TableFullScan_18 | +| │ └─TableFullScan_18 | 10000.00 | cop[tikv] | table:t2 | keep order:false, stats:pseudo | +| └─Projection_14(Probe) | 10000.00 | root | | test.t1.id, test.t1.tname, substr(test.t1.tname, 1, 2)->Column#5 | +| └─TableReader_16 | 10000.00 | root | | data:TableFullScan_15 | +| └─TableFullScan_15 | 10000.00 | cop[tikv] | table:t1 | keep order:false, stats:pseudo | ++------------------------------+----------+-----------+---------------+-----------------------------------------------------------------------+ +7 rows in set, 1 warning (0.01 sec) +``` + +```sql +SHOW WARNINGS; +``` + +``` ++---------+------+------------------------------------------------------------------------------------+ +| Level | Code | Message | ++---------+------+------------------------------------------------------------------------------------+ +| Warning | 1815 | Optimizer Hint /*+ INL_JOIN(t1, t2) */ or /*+ TIDB_INLJ(t1, t2) */ is inapplicable | ++---------+------+------------------------------------------------------------------------------------+ +1 row in set (0.00 sec) +``` + +从该示例中可以看到,`INL_JOIN` Hint 没有生效。该问题的根本原因是优化器限制导致无法使用 `Projection` 或者 `Selection` 算子作为 `IndexJoin` 的探测 (Probe) 端。 + +从 TiDB v8.0.0 起,你通过设置 [`tidb_enable_inl_join_inner_multi_pattern`](/system-variables.md#tidb_enable_inl_join_inner_multi_pattern-从-v700-版本开始引入) 为 `ON` 来避免该问题。 + +```sql +SET @@tidb_enable_inl_join_inner_multi_pattern=ON; +Query OK, 0 rows affected (0.00 sec) + +EXPLAIN SELECT /*+ INL_JOIN(t1, t2) */ * FROM t1, t2 WHERE t1.id=t2.id AND SUBSTR(t1.tname,1,2)=SUBSTR(t2.tname,1,2); ++------------------------------+--------------+-----------+---------------+--------------------------------------------------------------------------------------------------------------------------------------------+ +| id | estRows | task | access object | operator info | ++------------------------------+--------------+-----------+---------------+--------------------------------------------------------------------------------------------------------------------------------------------+ +| IndexJoin_18 | 12500.00 | root | | inner join, inner:Projection_14, outer key:test.t1.id, inner key:test.t2.id, equal cond:eq(Column#5, Column#6), eq(test.t1.id, test.t2.id) | +| ├─Projection_32(Build) | 10000.00 | root | | test.t1.id, test.t1.tname, substr(test.t1.tname, 1, 2)->Column#5 | +| │ └─TableReader_34 | 10000.00 | root | | data:TableFullScan_33 | +| │ └─TableFullScan_33 | 10000.00 | cop[tikv] | table:t1 | keep order:false, stats:pseudo | +| └─Projection_14(Probe) | 100000000.00 | root | | test.t2.id, test.t2.tname, substr(test.t2.tname, 1, 2)->Column#6 | +| └─TableReader_13 | 10000.00 | root | | data:TableRangeScan_12 | +| └─TableRangeScan_12 | 10000.00 | cop[tikv] | table:t2 | range: decided by [eq(test.t2.id, test.t1.id)], keep order:false, stats:pseudo | ++------------------------------+--------------+-----------+---------------+--------------------------------------------------------------------------------------------------------------------------------------------+ +7 rows in set (0.00 sec) +``` + +#### 排序规则不兼容导致 `INL_JOIN` Hint 不生效 如果两个表的 Join key 的排序规则不能兼容,将无法使用 IndexJoin 来执行查询。此时 [`INL_JOIN` Hint](#inl_joint1_name--tl_name-) 将无法生效。例如: @@ -976,7 +1047,7 @@ SHOW WARNINGS; 1 row in set (0.00 sec) ``` -### 连接顺序导致 `INL_JOIN` Hint 不生效 +#### 连接顺序导致 `INL_JOIN` Hint 不生效 [`INL_JOIN(t1, t2)`](#inl_joint1_name--tl_name-) 或 `TIDB_INLJ(t1, t2)` 的语义是让 `t1` 和 `t2` 作为 `IndexJoin` 的内表与其他表进行连接,而不是直接将 `t1` 和 `t2` 进行 `IndexJoin` 连接。例如: diff --git a/releases/release-7.5.1.md b/releases/release-7.5.1.md index 99f38d01c03c..0e171c7184d1 100644 --- a/releases/release-7.5.1.md +++ b/releases/release-7.5.1.md @@ -43,6 +43,10 @@ TiDB 版本:7.5.1 - 允许多个快速加索引 DDL 任务排队执行,而非回退为普通加索引任务 [#47758](https://github.com/pingcap/tidb/issues/47758) @[tangenta](https://github.com/tangenta) - 提升空表加索引的速度 [#49682](https://github.com/pingcap/tidb/issues/49682) @[zimulala](https://github.com/zimulala) ++ TiKV + + - 改善慢节点检测的判定算法,提升算法检测的灵敏度,同时降低了算法对于热读写场景下的误判率 [#15909](https://github.com/tikv/tikv/issues/15909) @[LykxSassinator](https://github.com/LykxSassinator) + + TiFlash - 改进 [RU (Request Unit)](/tidb-resource-control.md#什么是-request-unit-ru) 计算方法,以提高 RU 值的稳定性 [#8391](https://github.com/pingcap/tiflash/issues/8391) @[guo-shaoge](https://github.com/guo-shaoge) @@ -159,6 +163,7 @@ TiDB 版本:7.5.1 - 修复扩容时可能导致 DR Auto-Sync 的 joint state 超时问题 [#15817](https://github.com/tikv/tikv/issues/15817) @[Connor1996](https://github.com/Connor1996) - 修复 Resolved TS 可能被阻塞两小时的问题 [#11847](https://github.com/tikv/tikv/issues/11847) [#15520](https://github.com/tikv/tikv/issues/15520) [#39130](https://github.com/pingcap/tidb/issues/39130) @[overvenus](https://github.com/overvenus) - 修复 `cast_duration_as_time` 可能返回错误结果的问题 [#16211](https://github.com/tikv/tikv/issues/16211) @[gengliqi](https://github.com/gengliqi) + - 修复在某些异常场景下(如阻塞在 Disk I/O 操作上)TiKV 假死而影响可用性的问题 [#16368](https://github.com/tikv/tikv/issues/16368) @[LykxSassinator](https://github.com/LykxSassinator) + PD diff --git a/releases/release-7.6.0.md b/releases/release-7.6.0.md index d3fe2c81c7bb..582dc5529e75 100644 --- a/releases/release-7.6.0.md +++ b/releases/release-7.6.0.md @@ -208,7 +208,7 @@ TiDB 版本:7.6.0 从 `br` v5.1.0 开始,快照备份时默认自动备份 **mysql schema** 下的系统表数据,但恢复数据时默认不恢复系统表数据。在 v6.2.0 中,`br` 增加恢复参数 `--with-sys-table` 支持恢复数据的同时恢复部分系统表相关数据,提供更多的操作灵活性。 - 为了进一步降低用户的管理成本,并提供更直观的默认行为。从 v7.6.0 开始,`br` 默认开启恢复参数 `--with-sys-table`,并支持恢复 `user` 为 `cloud_admin` 的用户数据。这意味着 `br` 默认支持恢复数据的同时恢复部分系统表相关数据,特别是用户账号和表的统计信息数据。这一改进旨在使备份恢复操作更加直观,减轻手动配置的负担,从而提升整体的操作体验。 + 为了进一步降低用户的管理成本,并提供更直观的默认行为。从 v7.6.0 开始,`br` 默认开启恢复参数 `--with-sys-table`。这意味着 `br` 默认支持恢复数据的同时恢复部分系统表相关数据,特别是用户账号和表的统计信息数据。这一改进旨在使备份恢复操作更加直观,减轻手动配置的负担,从而提升整体的操作体验。 更多信息,请参考[用户文档](/br/br-snapshot-guide.md)。 diff --git a/sql-statements/sql-statement-import-into.md b/sql-statements/sql-statement-import-into.md index a9e6f6a4ec06..827943e41f7d 100644 --- a/sql-statements/sql-statement-import-into.md +++ b/sql-statements/sql-statement-import-into.md @@ -141,7 +141,7 @@ SET 表达式左侧只能引用 `ColumnNameOrUserVarList` 中没有的列名。 | `FIELDS_DEFINED_NULL_BY=''` | CSV | 指定字段为何值时将会被解析为 NULL,默认为 `\N`。 | | `LINES_TERMINATED_BY=''` | CSV | 指定行分隔符,默认 `IMPORT INTO` 会自动识别分隔符为 `\n`、`\r` 或 `\r\n`,如果行分隔符为以上三种,无须显式指定该选项。 | | `SKIP_ROWS=` | CSV | 指定需要跳过的行数,默认为 `0`。可通过该参数跳过 CSV 中的 header,如果是通过通配符来指定所需导入的源文件,该参数会对 fileLocation 中通配符匹配的所有源文件生效。 | -| `SPLIT_FILE` | CSV | 将单个 CSV 文件拆分为多个 256 MiB 左右的小文件块进行并行处理,以提高导入效率。该参数仅对**非**压缩的 CSV 文件生效,且该参数和 TiDB Lightning 的 [`strict-format`](/tidb-lightning/tidb-lightning-data-source.md#启用严格格式) 有相同的使用限制。 | +| `SPLIT_FILE` | CSV | 将单个 CSV 文件拆分为多个 256 MiB 左右的小文件块进行并行处理,以提高导入效率。该参数仅对**非**压缩的 CSV 文件生效,且该参数和 TiDB Lightning 的 [`strict-format`](/tidb-lightning/tidb-lightning-data-source.md#启用严格格式) 有相同的使用限制。注意,你需要为该选项显式指定 `LINES_TERMINATED_BY`。| | `DISK_QUOTA=''` | 所有文件格式 | 指定数据排序期间可使用的磁盘空间阈值。默认值为 TiDB [临时目录](/tidb-configuration-file.md#temp-dir-从-v630-版本开始引入)所在磁盘空间的 80%。如果无法获取磁盘总大小,默认值为 50 GiB。当显式指定 `DISK_QUOTA` 时,该值同样不能超过 TiDB [临时目录](/tidb-configuration-file.md#temp-dir-从-v630-版本开始引入)所在磁盘空间的 80%。 | | `DISABLE_TIKV_IMPORT_MODE` | 所有文件格式 | 指定是否禁止导入期间将 TiKV 切换到导入模式。默认不禁止。如果当前集群存在正在运行的读写业务,为避免导入过程对这部分业务造成影响,可开启该参数。 | | `THREAD=` | 所有文件格式、`SELECT` 语句的查询结果 | 指定导入的并发度。对于 `IMPORT INTO ... FROM FILE`,`THREAD` 默认值为 TiDB 节点的 CPU 核数的 50%,最小值为 `1`,最大值为 CPU 核数;对于 `IMPORT INTO ... FROM SELECT`,`THREAD` 默认值为 `2`,最小值为 `1`,最大值为 TiDB 节点的 CPU 核数的 2 倍。如需导入数据到一个空集群,建议可以适当调大该值,以提升导入性能。如果目标集群已经用于生产环境,请根据业务要求按需调整该参数值。 | diff --git a/statistics.md b/statistics.md index f74d47fd28ec..a20b322ed487 100644 --- a/statistics.md +++ b/statistics.md @@ -115,7 +115,7 @@ ANALYZE TABLE TableNameList [WITH NUM BUCKETS|TOPN|CMSKETCH DEPTH|CMSKETCH WIDTH > > 目前采样率基于自适应算法进行计算。当你通过 [`SHOW STATS_META`](/sql-statements/sql-statement-show-stats-meta.md) 可以观察到一个表的行数时,可通过这个行数去计算采集 10 万行所对应的采样率。如果你观察不到这个值,可通过表 [`SHOW TABLE REGIONS`](/sql-statements/sql-statement-show-table-regions.md) 结果中所有 `APPROXIMATE_KEYS` 列值的总和作为另一个参考来计算采样率。 > -> 通常情况下,`STATS_META` 相对 `APPROXIMATE_KEYS` 更可信,但是通过 [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md) 等方式导入数据结束后,`STATS_META` 结果是 `0`。为了处理这个情况,你可以在 `STATS_META` 的结果远小于 `APPROXIMATE_KEYS` 的结果时,使用 `APPROXIMATE_KEYS` 计算采样率。 +> 通常情况下,`STATS_META` 相对 `APPROXIMATE_KEYS` 更可信,但当 `STATS_META` 的结果远小于 `APPROXIMATE_KEYS` 的结果时,推荐使用 `APPROXIMATE_KEYS` 计算采样率。 #### 收集部分列的统计信息 diff --git a/system-variables.md b/system-variables.md index 1ec85c40097b..37bb1ee1a3ab 100644 --- a/system-variables.md +++ b/system-variables.md @@ -520,7 +520,7 @@ mysql> SELECT * FROM t1; - 作用域:NONE - 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否 - 默认值:(系统主机名) -- 这个变量一个只读变量,表示 TiDB server 的主机名。 +- 这个变量为只读变量,表示 TiDB server 的主机名。 ### `identity` 从 v5.3.0 版本开始引入 @@ -2440,6 +2440,7 @@ Query OK, 0 rows affected (0.09 sec) - 类型:布尔型 - 默认值:`OFF` - 这个变量用于控制是否开启 [TiCDC 单行数据正确性校验](/ticdc/ticdc-integrity-check.md)功能。 +- 你可以使用 [`TIDB_ROW_CHECKSUM()`](/functions-and-operators/tidb-functions.md#tidb_row_checksum) 函数查询行数据的 Checksum 值。 ### `tidb_enforce_mpp` 从 v5.1 版本开始引入 diff --git a/ticdc/ticdc-alert-rules.md b/ticdc/ticdc-alert-rules.md index 0578a531102e..d7a3275cf4fd 100644 --- a/ticdc/ticdc-alert-rules.md +++ b/ticdc/ticdc-alert-rules.md @@ -15,7 +15,7 @@ summary: 了解 TiCDC 集群监控报警规则以及处理方法。 * 报警规则: - (time() - ticdc_owner_checkpoint_ts / 1000) > 600 + `ticdc_owner_checkpoint_ts_lag > 600` * 规则描述: @@ -29,7 +29,7 @@ summary: 了解 TiCDC 集群监控报警规则以及处理方法。 * 报警规则: - (time() - ticdc_owner_resolved_ts / 1000) > 300 + `ticdc_owner_resolved_ts_lag > 300` * 规则描述: diff --git a/ticdc/ticdc-overview.md b/ticdc/ticdc-overview.md index dc3ae2136b03..a71ad627dbe6 100644 --- a/ticdc/ticdc-overview.md +++ b/ticdc/ticdc-overview.md @@ -119,7 +119,7 @@ Update t1 set b = 4 where b = 2; TiCDC 将根据数据变更信息重新生成 SQL 语句,向下游写以下两条 SQL 语句: ```sql -INSERT INTO `test.t1` (`A`,`B`) VALUES (1,1),(2,2),(3,3); +INSERT INTO `test.t1` (`A`,`B`) VALUES (1,2),(2,2),(3,3); UPDATE `test`.`t1` SET `A` = CASE WHEN `A` = 1 THEN 1 @@ -131,7 +131,7 @@ END WHERE `A` = 1 OR `A` = 2; ``` -### 暂不支持的场景 +## 暂不支持的场景 目前 TiCDC 暂不支持的场景如下: diff --git a/ticdc/ticdc-sink-to-kafka.md b/ticdc/ticdc-sink-to-kafka.md index 07593f7b556d..8a0817566241 100644 --- a/ticdc/ticdc-sink-to-kafka.md +++ b/ticdc/ticdc-sink-to-kafka.md @@ -36,9 +36,17 @@ Info: {"sink-uri":"kafka://127.0.0.1:9092/topic-name?protocol=canal-json&kafka-v Sink URI 用于指定 TiCDC 目标系统的连接信息,遵循以下格式: ```shell -[scheme]://[userinfo@][host]:[port][/path]?[query_parameters] +[scheme]://[host]:[port][/path]?[query_parameters] ``` +> **Tip:** +> +> 如果下游 Kafka 有多个主机或端口,可以在 Sink URI 中配置多个 `[host]:[port]`。例如: +> +> ```shell +> [scheme]://[host]:[port],[host]:[port],[host]:[port][/path]?[query_parameters] +> ``` + 一个通用的配置样例如下所示: ```shell diff --git a/tikv-configuration-file.md b/tikv-configuration-file.md index 7c047313646c..ea8f26339d5a 100644 --- a/tikv-configuration-file.md +++ b/tikv-configuration-file.md @@ -1039,6 +1039,7 @@ raftstore 相关的配置项。 + 设置 TiKV 启动周期性全量数据整理 (Compaction) 的时间。你可以在数组中指定一个或多个时间计划。例如: + `periodic-full-compact-start-times = ["03:00", "23:00"]` 表示 TiKV 基于 TiKV 节点的本地时区,在每天凌晨 3 点和晚上 11 点进行全量数据整理。 + `periodic-full-compact-start-times = ["03:00 +0000", "23:00 +0000"]` 表示 TiKV 在每天 UTC 时间的凌晨 3 点和晚上 11 点进行全量数据整理。 + + `periodic-full-compact-start-times = ["03:00 +0800", "23:00 +0800"]` 表示 TiKV 在每天 UTC+08:00 时间的凌晨 3 点和晚上 11 点进行全量数据整理。 + 默认值:`[]`,表示默认情况下禁用周期性全量数据整理。 ### `periodic-full-compact-start-max-cpu` 从 v7.6.0 版本开始引入 @@ -1270,6 +1271,10 @@ RocksDB 相关的配置项。 ### `info-log-max-size` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.file.max-size`](#max-size-从-v540-版本开始引入) 代替。 + + Info 日志的最大大小。 + 默认值:1GiB + 最小值:0 @@ -1277,11 +1282,19 @@ RocksDB 相关的配置项。 ### `info-log-roll-time` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃。TiKV 不再支持按照时间自动切分日志,请使用配置参数 [`log.file.max-size`](#max-size-从-v540-版本开始引入) 配置按照文件大小自动切分日志的阈值。 + + 日志截断间隔时间,如果为 0s 则不截断。 + 默认值:0s ### `info-log-keep-log-file-num` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.file.max-backups`](#max-backups-从-v540-版本开始引入) 代替。 + + 保留日志文件最大个数。 + 默认值:10 + 最小值:0 @@ -1293,6 +1306,10 @@ RocksDB 相关的配置项。 ### `info-log-level` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.level`](#level-从-v540-版本开始引入) 代替。 + + RocksDB 的日志级别。 + 默认值:`"info"` @@ -1322,7 +1339,7 @@ RocksDB 相关的配置项。 + 单位:KiB|MiB|GiB -### `track-and-verify-wals-in-manifest` 从 v6.5.9、v7.1.5、v8.0.0 版本开始引入 +### `track-and-verify-wals-in-manifest` 从 v6.5.9、v7.1.5、v7.5.2、v8.0.0 版本开始引入 + 控制是否在 RocksDB 的 MANIFEST 文件中记录 WAL (Write Ahead Log) 文件的信息,以及在启动时是否验证 WAL 文件的完整性。详情请参考 RocksDB [Track WAL in MANIFEST](https://github.com/facebook/rocksdb/wiki/Track-WAL-in-MANIFEST)。 + 默认值:`true` @@ -1846,6 +1863,10 @@ raftdb 相关配置项。 ### `info-log-max-size` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.file.max-size`](#max-size-从-v540-版本开始引入) 代替。 + + Info 日志的最大大小。 + 默认值:`"1GiB"` + 最小值:`0` @@ -1853,11 +1874,19 @@ raftdb 相关配置项。 ### `info-log-roll-time` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃。TiKV 不再支持按照时间自动切分日志,请使用配置参数 [`log.file.max-size`](#max-size-从-v540-版本开始引入) 配置按照文件大小自动切分日志的阈值。 + + Info 日志截断间隔时间,如果为 `"0s"` 则不截断。 + 默认值:`"0s"` ### `info-log-keep-log-file-num` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.file.max-backups`](#max-backups-从-v540-版本开始引入) 代替。 + + RaftDB 中保存的 Info 日志文件的最大数量。 + 默认值:`10` + 最小值:`0` @@ -1869,6 +1898,10 @@ raftdb 相关配置项。 ### `info-log-level` +> **警告:** +> +> 自 v5.4.0 起,RocksDB 的日志改为由 TiKV 的日志模块进行管理,因此该配置项被废弃,其功能由配置参数 [`log.level`](#level-从-v540-版本开始引入) 代替。 + + RaftDB 的日志级别。 + 默认值:`"info"` diff --git a/time-to-live.md b/time-to-live.md index 4e33b8753d28..e41f27fb3d72 100644 --- a/time-to-live.md +++ b/time-to-live.md @@ -244,7 +244,6 @@ TTL 功能能够与 TiDB 的迁移、备份、恢复工具一同使用。 * 具有 TTL 属性的表不支持作为外键约束的主表被其他表引用。 * 不保证所有过期数据立即被删除,过期数据被删除的时间取决于后台清理任务的调度周期和调度窗口。 * 对于使用[聚簇索引](/clustered-indexes.md)的表,如果主键的类型不是整数类型或二进制字符串类型,TTL 任务将无法被拆分成多个子任务。这将导致 TTL 任务只能在一个 TiDB 节点上按顺序执行。如果表中的数据量较大,TTL 任务的执行可能会变得缓慢。 -* TTL 无法在 [TiDB Serverless](https://docs.pingcap.com/tidbcloud/select-cluster-tier#tidb-serverless-beta) 集群上使用。 ## 常见问题 diff --git a/tiproxy/tiproxy-configuration.md b/tiproxy/tiproxy-configuration.md index 7e35e1911be8..dc0d0907b6ad 100644 --- a/tiproxy/tiproxy-configuration.md +++ b/tiproxy/tiproxy-configuration.md @@ -91,7 +91,7 @@ HTTP 网关的配置。 #### `addr` -+ 默认值:`0.0.0.0:3090` ++ 默认值:`0.0.0.0:3080` + 支持热加载:否 + API 网关地址。格式为 `:`。