Skip to content

Commit

Permalink
update TiDB 6MB limit (#6226)
Browse files Browse the repository at this point in the history
* update TiDB 6MB limit

Signed-off-by: youjiali1995 <zlwgx1023@gmail.com>

* Update error-codes.md

Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com>

* Update storage-engine/titan-overview.md

Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com>

* Update tidb-limitations.md

Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com>

* Update tidb-limitations.md

Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com>
  • Loading branch information
youjiali1995 and TomShawn authored May 11, 2021
1 parent f610705 commit 521f861
Show file tree
Hide file tree
Showing 5 changed files with 5 additions and 5 deletions.
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
2 changes: 1 addition & 1 deletion tidb-limitations.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ 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

0 comments on commit 521f861

Please sign in to comment.