From 1f6d293245987f337aff206d36f94c5fdccb134c Mon Sep 17 00:00:00 2001 From: yikeke Date: Mon, 20 Aug 2018 19:48:17 +0800 Subject: [PATCH] sql: update the step of the "Auto Increment ID" Via: https://github.com/pingcap/docs-cn/pull/842 --- sql/mysql-compatibility.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/mysql-compatibility.md b/sql/mysql-compatibility.md index a685cf706eaf2..5709e097c2e6f 100644 --- a/sql/mysql-compatibility.md +++ b/sql/mysql-compatibility.md @@ -41,14 +41,14 @@ The auto-increment ID feature in TiDB is only guaranteed to be automatically inc > create table t(id int unique key auto_increment, c int); > ``` > -> The principle of the auto-increment ID in TiDB is that each tidb-server instance caches a section of ID values for allocation and fetches the next section after this section is used up. +> The principle of the auto-increment ID in TiDB is that each tidb-server instance caches a section of ID values (currently 30000 IDs are cached) for allocation and fetches the next section after this section is used up. > -> Assume that the cluster contains two tidb-server instances, namely Instance A and Instance B. Instance A caches the auto-increment ID of [1, 5000], while Instance B caches the auto-increment ID of [5001, 10000]. +> Assume that the cluster contains two tidb-server instances, namely Instance A and Instance B. Instance A caches the auto-increment ID of [1, 30000], while Instance B caches the auto-increment ID of [30001, 60000]. > > The operations are executed as follows: > > 1. The client issues the `insert into t values (1, 1)` statement to Instance B which sets the `id` to 1 and the statement is executed successfully. -> 2. The client issues the `insert into t (c) (1)` statement to Instance A. This statement does not specify the value of `id`, so Instance A allocates the value. Currently, Instances A caches the auto-increment ID of [1, 5000], so it allocates the `id` value to 1 and adds 1 to the local counter. However, at this time the data with the `id` of 1 already exists in the cluster, therefore it reports `Duplicated Error`. +> 2. The client issues the `insert into t (c) (1)` statement to Instance A. This statement does not specify the value of `id`, so Instance A allocates the value. Currently, Instances A caches the auto-increment ID of [1, 30000], so it allocates the `id` value to 1 and adds 1 to the local counter. However, at this time the data with the `id` of 1 already exists in the cluster, therefore it reports `Duplicated Error`. ### Built-in functions