Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
30 changes: 15 additions & 15 deletions auto-random.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,29 @@ aliases: ['/docs-cn/v3.1/auto-random/','/docs-cn/v3.1/reference/sql/attributes/a
以下面语句建立的表为例:

```sql
create table t (a int primary key auto_increment, b varchar(255))
CREATE TABLE t (a int PRIMARY KEY AUTO_INCREMENT, b varchar(255))
```

在以上语句所建的表上执行大量未指定主键值的 `INSERT` 语句,示例如下:

```sql
insert into t(b) values ('a'), ('b'), ('c')
INSERT INTO t(b) VALUES ('a'), ('b'), ('c')
```

如以上语句,由于未指定主键列的值(`a` 列),TiDB 会使用连续自增的行值作为行 ID,可能导致单个 TiKV 节点上产生写入热点,进而影响对外提供服务的性能。要避免这种性能下降,可以在执行建表语句时为 `a` 列指定 `AUTO_RANDOM` 属性而不是 `AUTO_INCREMENT` 属性。示例如下:

{{< copyable "sql" >}}

```sql
create table t (a int primary key auto_random, b varchar(255))
CREATE TABLE t (a int PRIMARY KEY AUTO_RANDOM, b varchar(255))
```

或者

{{< copyable "sql" >}}

```sql
create table t (a int auto_random, b varchar(255), primary key (a))
CREATE TABLE t (a int AUTO_RANDOM, b varchar(255), PRIMARY KEY (a))
```

此时再执行形如 `INSERT INTO t(b) values...` 的 `INSERT` 语句。
Expand All @@ -57,7 +57,7 @@ create table t (a int auto_random, b varchar(255), primary key (a))
{{< copyable "sql" >}}

```sql
create table t (a int primary key auto_random(3), b varchar(255))
CREATE TABLE t (a int PRIMARY KEY AUTO_RANDOM(3), b varchar(255))
```

以上建表语句中,shard bits 的数量为 `3`。shard bits 的数量的取值范围是 `[1, field_max_bits)`,其中 `field_max_bits` 为整型主键列类型占用的位长度。
Expand All @@ -67,10 +67,10 @@ create table t (a int primary key auto_random(3), b varchar(255))
{{< copyable "sql" >}}

```sql
show warnings
SHOW WARNINGS
```

```
```sql
+-------+------+------------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------------+
Expand All @@ -80,19 +80,19 @@ show warnings

另外,含有 `AUTO_RANDOM` 属性的表在系统表 `information_schema.tables` 中 `TIDB_ROW_ID_SHARDING_INFO` 一列的值为 `PK_AUTO_RANDOM_BITS=x`,其中 `x` 为 shard bits 的数量。

要获取上一次 TiDB 隐式分配的 ID,可以使用 `select last_insert_id()` 查看,例如:
要获取上一次 TiDB 隐式分配的 ID,可以使用 `SELECT last_insert_id()` 查看,例如:

{{< copyable "sql" >}}

```sql
insert into t (b) values ("b")
select * from t;
select last_insert_id()
INSERT INTO t (b) VALUES ("b")
SELECT * FROM t;
SELECT last_insert_id()
```

可能得到的结果如下:

```
```sql
+------------+---+
| a | b |
+------------+---+
Expand All @@ -113,18 +113,18 @@ TiDB 支持解析版本注释语法。示例如下:
{{< copyable "sql" >}}

```sql
create table t (a bigint primary key /*T![auto_rand] auto_random */)
CREATE TABLE t (a bigint PRIMARY KEY /*T![auto_rand] auto_random */)
```

{{< copyable "sql" >}}

```sql
create table t (a int primary key auto_random)
CREATE TABLE t (a int PRIMARY KEY AUTO_RANDOM)
```

以上两个语句含义相同。

在 `show create table` 的结果中,`AUTO_RANDOM` 属性会被注释掉。注释会附带一个特性标识符,例如 `/*T![auto_rand] auto_random */`。其中 `auto_rand` 表示 `AUTO_RANDOM` 的特性标识符,只有实现了该标识符对应特性的 TiDB 版本才能够正常解析 SQL 语句片段。
在 `SHOW CREATE TABLE` 的结果中,`AUTO_RANDOM` 属性会被注释掉。注释会附带一个特性标识符,例如 `/*T![auto_rand] auto_random */`。其中 `auto_rand` 表示 `AUTO_RANDOM` 的特性标识符,只有实现了该标识符对应特性的 TiDB 版本才能够正常解析 SQL 语句片段。

该功能支持向前兼容,即降级兼容。没有实现对应特性的 TiDB 版本则会忽略表(带有上述注释)的 `AUTO_RANDOM` 属性,因此能够使用含有该属性的表。

Expand Down
4 changes: 2 additions & 2 deletions backup-and-restore-using-mydumper-lightning.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,15 @@ aliases: ['/docs-cn/v3.1/backup-and-restore-using-mydumper-lightning/','/docs-cn
{{< copyable "sql" >}}

```sql
update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_life_time';
UPDATE mysql.tidb SET VARIABLE_VALUE = '720h' WHERE VARIABLE_NAME = 'tikv_gc_life_time';
```

2. 执行 `mydumper` 命令后,将 TiDB 集群的 GC 值恢复到第 1 步中的初始值:

{{< copyable "sql" >}}

```sql
update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time';
UPDATE mysql.tidb SET VARIABLE_VALUE = '10m' WHERE VARIABLE_NAME = 'tikv_gc_life_time';
```

## 向 TiDB 恢复数据
Expand Down
2 changes: 1 addition & 1 deletion basic-sql-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ ALTER TABLE person ADD UNIQUE person_num (number);
{{< copyable "sql" >}}

```sql
SHOW INDEX from person;
SHOW INDEX FROM person;
```

使用 `ALTER TABLE` 或 `DROP INDEX` 语句来删除索引。与 `CREATE INDEX` 语句类似,`DROP INDEX` 也可以嵌入 `ALTER TABLE` 语句。例如:
Expand Down
28 changes: 14 additions & 14 deletions blacklist-control-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,27 +43,27 @@ aliases: ['/docs-cn/v3.1/blacklist-control-plan/']
{{< copyable "sql" >}}

```sql
insert into mysql.opt_rule_blacklist values("join_reorder"), ("topn_push_down");
INSERT INTO mysql.opt_rule_blacklist VALUES("join_reorder"), ("topn_push_down");
```

执行以下 SQL 语句可让禁用规则立即生效,包括相应 TiDB Server 的所有旧链接:

{{< copyable "sql" >}}

```sql
admin reload opt_rule_blacklist;
ADMIN reload opt_rule_blacklist;
```

> **注意:**
>
>
> `admin reload opt_rule_blacklist` 只对执行该 SQL 语句的 TiDB server 生效。若需要集群中所有 TiDB server 生效,需要在每台 TiDB server 上执行该 SQL 语句。

- 需要解除一条规则的禁用时,需要删除表中禁用该条规则的相应数据,再执行 `admin reload`:

{{< copyable "sql" >}}

```sql
delete from mysql.opt_rule_blacklist where name in ("join_reorder", "topn_push_down");
DELETE FROM mysql.opt_rule_blacklist WHERE name IN ("join_reorder", "topn_push_down");
admin reload opt_rule_blacklist;
```

Expand All @@ -83,15 +83,15 @@ aliases: ['/docs-cn/v3.1/blacklist-control-plan/']
| [日期运算](/functions-and-operators/date-and-time-functions.md) | [`DATE_FORMAT()`](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format) |

### 禁止特定表达式下推

当函数的计算过程由于下推而出现异常时,可通过黑名单功能禁止其下推来快速恢复业务。具体而言,你可以将上述支持的函数或运算符名加入黑名单 `mysql.expr_pushdown_blacklist` 中,以禁止特定表达式下推。

`mysql.expr_pushdown_blacklist` 的 schema 如下:

{{< copyable "sql" >}}

```sql
desc mysql.expr_pushdown_blacklist;
DESC mysql.expr_pushdown_blacklist;
```

```sql
Expand Down Expand Up @@ -147,7 +147,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
explain select * from t where a < 2 and a > 2;
EXPLAIN SELECT * FROM t WHERE a < 2 AND a > 2;
```

```sql
Expand All @@ -166,7 +166,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
insert into mysql.expr_pushdown_blacklist values('<','tikv',''), ('>','tikv','');
INSERT INTO mysql.expr_pushdown_blacklist VALUES('<','tikv',''), ('>','tikv','');
```

```sql
Expand All @@ -177,7 +177,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
admin reload expr_pushdown_blacklist;
ADMIN reload expr_pushdown_blacklist;
```

```sql
Expand All @@ -189,7 +189,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
explain select * from t where a < 2 and a > 2;
EXPLAIN SELECT * FROM t WHERE a < 2 and a > 2;
```

```sql
Expand All @@ -208,7 +208,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
delete from mysql.expr_pushdown_blacklist where name = '>';
DELETE FROM mysql.expr_pushdown_blacklist WHERE name = '>';
```

```sql
Expand All @@ -218,7 +218,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
admin reload expr_pushdown_blacklist;
ADMIN reload expr_pushdown_blacklist;
```

```sql
Expand All @@ -230,7 +230,7 @@ desc mysql.expr_pushdown_blacklist;
{{< copyable "sql" >}}

```sql
explain select * from t where a < 2 and a > 2;
EXPLAIN SELECT * FROM t WHERE a < 2 AND a > 2;
```

```sql
Expand Down
8 changes: 4 additions & 4 deletions character-set-and-collation.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ ALTER DATABASE db_name
{{< copyable "sql" >}}

```sql
create schema test1 character set utf8 COLLATE uft8_general_ci;
CREATE SCHEMA test1 CHARACTER SET utf8 COLLATE uft8_general_ci;
```

```
Expand All @@ -140,7 +140,7 @@ Query OK, 0 rows affected (0.09 sec)
{{< copyable "sql" >}}

```sql
use test1;
USE test1;
```

```
Expand All @@ -165,7 +165,7 @@ SELECT @@character_set_database, @@collation_database;
{{< copyable "sql" >}}

```sql
create schema test2 character set latin1 COLLATE latin1_general_ci;
CREATE SCHEMA test2 CHARACTER SET latin1 COLLATE latin1_general_ci;
```

```
Expand All @@ -175,7 +175,7 @@ Query OK, 0 rows affected (0.09 sec)
{{< copyable "sql" >}}

```sql
use test2;
USE test2;
```

```
Expand Down