Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update TiDB 6MB limit #6226

Merged
merged 5 commits into from
May 11, 2021
Merged
Show file tree
Hide file tree
Changes from 4 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
2 changes: 1 addition & 1 deletion best-practices/tidb-best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ TiDB 提供完整的分布式事务,事务模型是在 [Google Percolator](htt
由于分布式事务要做两阶段提交,并且底层还需要做 Raft 复制,如果一个事务非常大,会使得提交过程非常慢,并且会卡住下面的 Raft 复制流程。为了避免系统出现被卡住的情况,我们对事务的大小做了限制:

- 单个事务包含的 SQL 语句不超过 5000 条(默认)
- 单条 KV entry 不超过 6MB
- 单条 KV entry 不超过 6MB(默认)
- KV entry 的总大小不超过 10G

在 Google 的 Cloud Spanner 上面,也有[类似的限制](https://cloud.google.com/spanner/docs/limits)。
Expand Down
2 changes: 1 addition & 1 deletion error-codes.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ TiDB 兼容 MySQL 的错误码,在大多数情况下,返回和 MySQL 一样

* Error Number: 8025

写入的单条键值对过大。TiDB 最大支持 6MB 的单个键值对,超过该限制需要将过大的单行数据进行人工处理,以满足 6MB 限制
写入的单条键值对过大。TiDB 默认支持最大 6MB 的单个键值对,超过该限制可适当调整 [`txn-entry-size-limit`](/tidb-configuration-file.md#txn-entry-size-limit-从-v50-版本开始引入) 配置项以放宽限制

* Error Number: 8026

Expand Down
2 changes: 1 addition & 1 deletion faq/migration-tidb-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ TiDB 读流量可以通过增加 TiDB server 进行扩展,总读容量无限

### Transaction too large 是什么原因,怎么解决?

TiDB 限制了单条 KV entry 不超过 6MB。
TiDB 限制了单条 KV entry 不超过 6MB,可以修改配置文件中的 [`txn-entry-size-limit`](/tidb-configuration-file.md#txn-entry-size-limit-从-v50-版本开始引入) 配置项进行调整,最大可以修改到 120MB

分布式事务要做两阶段提交,而且底层还需要做 Raft 复制。如果一个事务非常大,提交过程会非常慢,事务写冲突概率会增加,而且事务失败后回滚会导致不必要的性能开销。所以我们设置了 key-value entry 的总大小默认不超过 100MB。如果业务需要使用大事务,可以修改配置文件中的 `txn-total-size-limit` 配置项进行调整,最大可以修改到 10G。实际的大小限制还受机器的物理内存影响。

Expand Down
2 changes: 1 addition & 1 deletion storage-engine/titan-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Titan 适合在以下场景中使用:

开启 Titan 需要考虑以下前提条件:

- Value 较大。即 value 平均大小比较大,或者数据中大 value 的数据总大小占比比较大。目前 Titan 默认 1KB 以上大小的 value 是大 value,根据实际情况 512B 以上大小的 value 也可以看作是大 value。注:由于 TiKV Raft 层的限制,写入 TiKV 的 value 大小还是无法超过 6MB 的限制。
- Value 较大。即 value 平均大小比较大,或者数据中大 value 的数据总大小占比比较大。目前 Titan 默认 1KB 以上大小的 value 是大 value,根据实际情况 512B 以上大小的 value 也可以看作是大 value。注:由于 TiKV Raft 层的限制,写入 TiKV 的 value 大小还是无法超过 8MB 的限制,可通过 [`raft-entry-max-size`](/tikv-configuration-file.md#raft-entry-max-size) 配置项调整该限制
- 没有范围查询或者对范围查询性能不敏感。Titan 存储数据的顺序性较差,所以相比 RocksDB 范围查询的性能较差,尤其是大范围查询。在测试中 Titan 范围查询性能相比 RocksDB 下降 40% 到数倍不等。
- 磁盘剩余空间足够。Titan 降低写放大是通过牺牲空间放大达到的。另外由于 Titan 逐个压缩 value,压缩率比 RocksDB(逐个压缩 block)要差。这两个因素一起造成 Titan 占用磁盘空间比 RocksDB 要多,这是正常现象。根据实际情况和不同的配置,Titan 磁盘空间占用可能会比 RocksDB 多一倍。

Expand Down
3 changes: 2 additions & 1 deletion tidb-limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ aliases: ['/docs-cn/dev/tidb-limitations/']

| 类型 | 最大限制 |
|:----------|:----------|
| Size | 6MB |
| Size | 默认为 6MB,可通过 [`txn-entry-size-limit`](/tidb-configuration-file.md#txn-entry-size-limit-从-v50-版本开始引入) 配置项调整 |


## 单列的限制

Expand Down