diff --git a/best-practices/tidb-best-practices.md b/best-practices/tidb-best-practices.md index 0dcaffa70b48..30bb828ec940 100644 --- a/best-practices/tidb-best-practices.md +++ b/best-practices/tidb-best-practices.md @@ -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)。 diff --git a/error-codes.md b/error-codes.md index 0ed7f90a91b8..8bcb789e5c4e 100644 --- a/error-codes.md +++ b/error-codes.md @@ -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 diff --git a/faq/migration-tidb-faq.md b/faq/migration-tidb-faq.md index a320dee54c41..5bd58f5bd3d7 100644 --- a/faq/migration-tidb-faq.md +++ b/faq/migration-tidb-faq.md @@ -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。实际的大小限制还受机器的物理内存影响。 diff --git a/storage-engine/titan-overview.md b/storage-engine/titan-overview.md index c26413266b30..c0aef15bcbf7 100644 --- a/storage-engine/titan-overview.md +++ b/storage-engine/titan-overview.md @@ -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 多一倍。 diff --git a/tidb-limitations.md b/tidb-limitations.md index e1c8628aaaa6..1536fd23d425 100644 --- a/tidb-limitations.md +++ b/tidb-limitations.md @@ -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-版本开始引入) 配置项调整 | ## 单列的限制