Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions faq/ddl-faq-test3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
title: DDL 常见问题
summary: 介绍 DDL 相关的常见问题。
---

# DDL 常见问题

本文档介绍 TiDB 集群中常见的些 DDL 问题。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

句子表述不够通顺,建议修改措辞。

Suggested change
本文档介绍 TiDB 集群中常见的些 DDL 问题。
本文档介绍 TiDB 集群中常见的 DDL 问题。


## TiDB DDL 是否支持 DDL 语句间并行?具体一些运行特征是怎样地?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

标题表述不够规范,建议修改为更专业的提问方式。

Suggested change
## TiDB DDL 是否支持 DDL 语句间并行?具体一些运行特征是怎样地
## TiDB DDL 是否支持 DDL 语句间的并行执行?具体有哪些运行特征


在 TiDB v6.2 之后时,TiDB 提供并发 DDL(concurent DDL) 执行的能力。 并发 DDL 主是提供 DDL 语句间的并发执行支持。这里和以前的 DDL 执将会发生如下变化:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

句子存在多处语病和错别字,建议全面修改。

Suggested change
TiDB v6.2 之后时,TiDB 提供并发 DDL(concurent DDL) 执行的能力。 并发 DDL 主是提供 DDL 语句间的并发执行支持。这里和以前的 DDL 执将会发生如下变化
TiDB v6.2 版本开始,TiDB 提供并发 DDL(Concurrent DDL)执行能力。并发 DDL 主要支持 DDL 语句间的并行执行。与之前的 DDL 执行相比,主要变化如下


1. 需要判断 DDL 语句间是否有相关性,如果有相关性的 DDL 语句将会按照进入 TiDB 的顺序执行,没有相关性的 DDL 语句可以并发执行。并发判断规则:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

列表项描述不够清晰,建议补充说明相关性判断的具体标准。

Suggested change
1. 需要判断 DDL 语句间是否有相关性,如果有相关性的 DDL 语句将会按照进入 TiDB 的顺序执行,没有相关性的 DDL 语句可以并发执行。并发判断规则
1. 需要判断 DDL 语句间是否存在相关性。有相关性的 DDL 语句将按照进入 TiDB 的顺序执行,无相关性的 DDL 语句可以并发执行。相关性判断规则如下

1. 相同表上的 DDL 语句之间具有相关性,需要按照进入 TiDB 的顺序执行;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

表述不够严谨,建议明确说明"相同表"的范围。

Suggested change
1. 相同表上的 DDL 语句之间具有相关性,需要按照进入 TiDB 的顺序执行
1. 对同一张表的 DDL 操作具有相关性,需要按顺序执行

2. 对于 Schema 上的操作,可能会对于 schema 中的表上的 DDL 语句建立相关性,目前 Drop Schema 会对于其包含 Schema 上的 DDL 产生相关性;也需要顺序执行;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

句子表述不够清晰,建议重新组织语言。

Suggested change
2. 对于 Schema 上的操作,可能会对于 schema 中的表上的 DDL 语句建立相关性,目前 Drop Schema 会对于其包含 Schema 上的 DDL 产生相关性;也需要顺序执行
2. Schema 级别的操作可能会影响该 Schema 下表的 DDL 语句。目前,DROP SCHEMA 操作会对其包含的所有表的 DDL 语句产生相关性,这些操作也需要顺序执行

2. 是否所有的 DDL 语句都会并发执行?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

提问方式不够专业,建议修改。

Suggested change
2. 是否所有的 DDL 语句都会并发执行
2. 是否所有 DDL 语句都支持并发执行

当前,答案是否定的,在 TiDB 中 DDL 语句被分为两类,
1. 普通(general)DDL 语句,这类 DDL 语句的执行只需要修改对象的元数据,不需要操作 schema 存储的数据,通常在秒级完成;需要的计算资源相对少;
2. 需要重组(reorg)DDL 语句, 这类 DDL 语句的执行不仅需要修改对象的元数据,也需要对于 schema 存储的数据进行处理,例如:加索引,需要扫描全表数据,来创建索引,需要比较多的计算资源与较长的执行时间;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

术语使用不一致,建议统一使用"reorganize"。

Suggested change
2. 需要重组(reorg)DDL 语句这类 DDL 语句的执行不仅需要修改对象的元数据,也需要对于 schema 存储的数据进行处理,例如:加索引,需要扫描全表数据,来创建索引,需要比较多的计算资源与较长的执行时间
2. 需要重组数据(reorganize)的 DDL 语句这类 DDL 语句不仅需要修改元数据,还需要处理 schema 中存储的数据(例如创建索引需要扫描全表数据)。这类操作需要较多计算资源和较长的执行时间

当前我们仅对于需要重组的 DDL 语句启动了并发执行支持。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

表述不够准确,建议明确说明当前支持的范围。

Suggested change
当前我们仅对于需要重组的 DDL 语句启动了并发执行支持
目前仅支持需要重组数据的 DDL 语句的并发执行

3. 对于启动了并发 DDL 语句支持的 TiDB 集群,DDL 语句间的并发度是如何确定的?
目前因为 DDL 等后台任务的执行可能会占用相当的资源,因此我们采取了一个相对保守的策略来确定 DDL 语句执行的并发度

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

句子表述不够通顺,建议修改。

Suggested change
目前因为 DDL 等后台任务的执行可能会占用相当的资源,因此我们采取了一个相对保守的策略来确定 DDL 语句执行的并发度
由于 DDL 等后台任务执行可能占用较多资源,因此采用了相对保守的并发度策略:

1. 对于普通 DDL(general DDL) 语句,我们当前语句并发度是 1(后续将会提供并发执行支持);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修改后的表述虽然更口语化,但技术文档建议保持一致性,建议保留原表述或采用更正式的表述方式。

Suggested change
1. 对于普通 DDL(general DDL) 语句,我们当前语句并发度是 1(后续将会提供并发执行支持);
1. 对于普通 DDL(general DDL)语句,当前语句并发度为 1(后续将会提供并发执行支持);

2. 对于需要重组的 DDL(Reorg DDL)语句,我们的并发度设置规则如下(并发度不允许用户自己设置):
TiDB DDL owner 节点容器能够使用的 CPU 资源数量的 1/4 与 1 之间的最大值,例如 8C 规格的 TiDB DDL owner 节点,并发度将会是 2。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

技术细节描述不够准确,建议补充计算公式。

Suggested change
TiDB DDL owner 节点容器能够使用的 CPU 资源数量的 1/4 与 1 之间的最大值例如 8C 规格的 TiDB DDL owner 节点,并发度将会是 2。
TiDB DDL owner 节点容器可用 CPU 核数的 1/4(向下取整)与 1 之间的最大值例如 8 核的 TiDB DDL owner 节点,并发度为 2。

Loading