Skip to content

Commit

Permalink
mark the support of foreign key as experimental (#15391)
Browse files Browse the repository at this point in the history
  • Loading branch information
qiancai authored Nov 9, 2023
1 parent ba508ec commit 6f3cbee
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion basic-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ aliases: ['/docs-cn/dev/basic-features/','/docs-cn/dev/experimental-features-4.0
| [整型主键上的聚簇索引](/clustered-indexes.md) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| [复合或非整型主键上的聚簇索引](/clustered-indexes.md) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| [多值索引](/sql-statements/sql-statement-create-index.md#多值索引) | Y | Y | Y | Y | N | N | N | N | N | N | N | N |
| [外键约束](/constraints.md#外键约束) | Y | Y | Y | Y | N | N | N | N | N | N | N | N |
| [外键约束](/constraints.md#外键约束) | E | E | E | E | N | N | N | N | N | N | N | N |
| [TiFlash 延迟物化](/tiflash/tiflash-late-materialization.md) | Y | Y | Y | Y | N | N | N | N | N | N | N | N |

## SQL 语句
Expand Down
2 changes: 1 addition & 1 deletion constraints.md
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ Query OK, 0 rows affected (0.10 sec)

> **注意:**
>
> TiDB 从 v6.6.0 开始支持[外键约束](/foreign-key.md)。在 v6.6.0 之前,TiDB 支持创建和删除外键约束,但外键约束并不生效。升级到 v6.6.0 后,可以先删除不生效的外键后再创建外键使外键约束生效。
> TiDB 从 v6.6.0 开始支持[外键约束](/foreign-key.md)(实验特性)。在 v6.6.0 之前,TiDB 支持创建和删除外键约束,但外键约束并不生效。升级到 v6.6.0 后,可以先删除不生效的外键后再创建外键使外键约束生效。
TiDB 支持创建外键约束。例如:

Expand Down
12 changes: 7 additions & 5 deletions develop/dev-guide-sample-application-nodejs-prisma.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,13 +344,15 @@ await prisma.player.delete({

### 外键约束与 Prisma Relation Mode

对于 TiDB v6.6.0 或更高版本,推荐使用[外键约束](https://docs.pingcap.com/zh/tidb/stable/foreign-key)来替代 [Prisma Relation Mode](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/relation-mode) 来实现[参照完整性](https://zh.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E5%AE%8C%E6%95%B4%E6%80%A7)检查。
你可以使用外键约束或 Prisma Relation Mode 来检查[参照完整性](https://zh.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E5%AE%8C%E6%95%B4%E6%80%A7)

Relation Mode 是 Prisma Client 端对外键约束的模拟。该特性会对应用程序的性能产生一些影响,因为它需要额外的数据库查询来维护参照完整性
- [外键](/foreign-key.md)是 TiDB 从 v6.6.0 开始支持的实验特性,外键允许跨表交叉引用相关数据,外键约束则可以保证相关数据的一致性

> **Note**
>
> 外键功能通常适用于为**中小规模**的数据提供完整性和一致性约束校验,但是在大数据量和分布式数据库系统下,使用外键可能会导致严重的性能问题,并对系统产生不可预知的影响。如果计划使用外键,请进行充分验证后谨慎使用。
> **警告:**
>
> 外键功能通常适用于为**中小规模**的数据提供完整性和一致性约束校验,但是在大数据量和分布式数据库系统下,使用外键可能会导致严重的性能问题,并对系统产生不可预知的影响。如果计划使用外键,请进行充分验证后谨慎使用。
- [Prisma Relation Mode](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/relation-mode) 是 Prisma Client 端对外键约束的模拟。该特性会对应用程序的性能产生一些影响,因为它需要额外的数据库查询来维护参照完整性。

## 下一步

Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-nodejs-typeorm.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ console.log(rows[0]['tidb_version']);

### 外键约束

使用外键约束可以通过在数据库层面添加检查来确保数据的[引用完整性](https://zh.wikipedia.org/wiki/参照完整性)。但是,在大数据量的场景下,这可能会导致严重的性能问题。
使用[外键约束](/foreign-key.md)(实验特性)可以通过在数据库层面添加检查来确保数据的[引用完整性](https://zh.wikipedia.org/wiki/参照完整性)。但是,在大数据量的场景下,这可能会导致严重的性能问题。

你可以通过使用 `createForeignKeyConstraints` 选项来控制在构建实体之间的关系时是否创建外键约束(默认值为 `true`)。

Expand Down
5 changes: 3 additions & 2 deletions foreign-key.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ summary: TiDB 数据库中外键约束的使用概况。

从 v6.6.0 开始,TiDB 支持外键以及外键约束功能,外键允许跨表交叉引用相关数据,外键约束则可以保证相关数据的一致性。

> **注意**
> **警告**
>
> 外键功能通常适用于为中小规模的数据提供完整性和一致性约束校验,但是在大数据量和分布式数据库系统下,使用外键可能会导致严重的性能问题,并对系统产生不可预知的影响。如果计划使用外键,请进行充分验证后谨慎使用。
> - 外键功能目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。
> - 外键功能通常适用于为中小规模的数据提供完整性和一致性约束校验,但是在大数据量和分布式数据库系统下,使用外键可能会导致严重的性能问题,并对系统产生不可预知的影响。如果计划使用外键,请进行充分验证后谨慎使用。
外键是在子表中定义的,语法如下:

Expand Down
6 changes: 3 additions & 3 deletions releases/release-6.6.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ TiDB 版本:6.6.0-[DMR](/releases/versioning.md#开发里程碑版本)
</tr>
<tr>
<td rowspan="2">功能特性与兼容性<br /></td>
<td><a href="https://docs.pingcap.com/zh/tidb/v6.6/foreign-key" target="_blank">外键约束</a></td>
<td><a href="https://docs.pingcap.com/zh/tidb/v6.6/foreign-key" target="_blank">外键约束</a>(实验特性)</td>
<td>支持 MySQL 兼容的外键约束,帮助保持数据一致性和提升数据质量。</td>
</tr>
<tr>
Expand Down Expand Up @@ -172,7 +172,7 @@ TiDB 版本:6.6.0-[DMR](/releases/versioning.md#开发里程碑版本)

### SQL 功能

* 支持兼容 MySQL 语法的外键约束 [#18209](https://github.com/pingcap/tidb/issues/18209) @[crazycs520](https://github.com/crazycs520)
* 支持兼容 MySQL 语法的外键约束(实验特性)[#18209](https://github.com/pingcap/tidb/issues/18209) @[crazycs520](https://github.com/crazycs520)

TiDB v6.6.0 引入了兼容 MySQL 语法的外键约束功能,支持在表内、表间关联数据并进行约束校验,并且支持级联操作。该特性有助于将 MySQL 上的应用迁移到 TiDB、保持数据一致性、提升数据质量并且方便数据建模。

Expand Down Expand Up @@ -331,7 +331,7 @@ TiDB 版本:6.6.0-[DMR](/releases/versioning.md#开发里程碑版本)

### MySQL 兼容性

* 支持兼容 MySQL 语法的外键约束 [#18209](https://github.com/pingcap/tidb/issues/18209) @[crazycs520](https://github.com/crazycs520)
* 支持兼容 MySQL 语法的外键约束(实验特性)[#18209](https://github.com/pingcap/tidb/issues/18209) @[crazycs520](https://github.com/crazycs520)

更多信息,请参考本文的 [SQL 部分](#sql-功能)以及[用户文档](/foreign-key.md)。

Expand Down

0 comments on commit 6f3cbee

Please sign in to comment.