# 练习 1: 在不同作用域修改 TiDB 的系统参数

## 练习目的
+ 在这个练习中，您将会在不同作用域下对于 TiDB 的系统参数进行修改。

## 先决条件
+ 注意，您的练习环境（包括 IP，端口号，用户名，密码和目录）可能和本练习不同。
+ 可以连接到实验用虚拟机。
+ TiDB 已经部署完毕。


1. 连接到 TiDB , 进入 `test` 数据库.
```
$ mysql -h 120.131.9.24 -P 4000 -uroot -p
```

```sql
> USE test;
```

2. 创建表 `t1`（t1 表只有一列:`a`，并且是自增主键列).
```sql
> CREATE TABLE t1 (a int not null primary key auto_increment);
```

3. 查看系统参数 `auto_increment_increment` (`auto_increment_increment`默认值为 1).
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
```


4. 插入 2 行数据 (增量为 1) 并查询结果.
```sql
> INSERT INTO t1 VALUES ();
```

```sql
> INSERT INTO t1 VALUES ();
```

```sql
> SELECT * FROM t1;
```


5. 在会话级别修改参数 `auto_increment_increment` 为 10.
```sql
> SET auto_increment_increment = 10;
```

6. 继续插入 2 行数据 (增量变为 10) 并查询结果.
```sql
> INSERT INTO t1 VALUES ();
```
```sql 
> INSERT INTO t1 VALUES ();
```
```sql
> SELECT * FROM t1;
```


7. 打开新终端 (终端 2)，连接 TiDB (请根据自己实验环境输入密码), 进入 `test` 数据库.
```
$ mysql -h 120.131.9.24 -P 4000 -uroot -p
```
```sql
> USE test;
```


8. 在终端 2 查询参数 `auto_increment_increment`, 发现默认值依然为 1.
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
```


9. 在终端 2 中插入 2 行数据 (增量为 1).
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> SELECT * FROM t1;
```

10. 退出第一个会话 (终端 1)
```
> exit
```

11.  再次连接会话，并进入 `test` 数据库.
```
$ mysql -h 120.131.9.24 -P 4000 -uroot -p
```
```sql
> USE test;
```


12. 查询参数 `auto_increment_increment`, 发现默认值为 1.
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
```


13. 继续插入 2 行数据 (增量为 1) 并查询结果.
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> SELECT * FROM t1;
```

14. 在 `GLOBAL` 范围进行修改.
```sql
> SET GLOBAL auto_increment_increment=10;
```


15. 在当前会话级别，查询参数 `auto_increment_increment`.
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
```


16. 打开另一个终端 (终端 3), 连接 TiDB, 并进入 `test` 数据库.
```
$ mysql -h 120.131.9.24 -P 4000 -uroot -p
```
```sql
> USE test;
```


17. 在终端 3 查看参数 `auto_increment_increment`, 发现默认值变为 10.
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
```


18. 继续插入 2 行数据(增量为 10).
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> INSERT INTO t1 VALUES ();
```
```sql
> SELECT * FROM t1;
```


19. 回到终端 1, 退出会话并再次登录 (发现变量 `auto_increment_increment` 为 10).
```sql
> exit
```
```
$ mysql -h120.131.9.24 -P 4000 -uroot -p
```


20. 重启 TiDB, 验证 `GLOBAL` 范围的参数修改是否会被持久化.
```
$ tiup cluster stop tidb-test
```
```
$ tiup cluster start tidb-test
```

21. 登录 TiDB 后，发现参数被持久化，`auto_increment_increment` 依然为 10.
```
$ mysql -h120.131.9.24 -P 4000 -uroot -p
```
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
```


## 步骤 3 输出样例
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
+--------------------------+-------+
1 row in set (0.00 sec)
```


## 步骤 4 输出样例
```sql
> SELECT * FROM t1;
+---+
| a |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.01 sec)
```


## 步骤 6 输出样例
```sql
> SELECT * FROM t1;
+----+
| a  |
+----+
|  1 |
|  2 |
| 11 |
| 21 |
+----+
4 rows in set (0.01 sec)
```

## 步骤 8 输出样例
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
+--------------------------+-------+
1 row in set (0.00 sec)
```


## 步骤 9 输出样例
```sql
> SELECT * FROM t1;
+----+
| a  |
+----+
|  1 |
|  2 |
| 11 |
| 21 |
| 22 |
| 23 |
+----+
6 rows in set (0.01 sec)
```


## 步骤 12 输出样例
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
+--------------------------+-------+
1 row in set (0.00 sec)
```


## 步骤 13 输出样例
```sql
> SELECT * FROM t1;
+----+
| a  |
+----+
|  1 |
|  2 |
| 11 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
+----+
8 rows in set (0.01 sec)
```


## 步骤 15 输出样例
```sql
> SHOW SESSION VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
+--------------------------+-------+
1 row in set (0.00 sec)
```


## 步骤 17 输出样例
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
+--------------------------+-------+
1 row in set (0.01 sec)
```


## 步骤 18 输出样例
```sql
> SELECT * FROM t1;
+----+
| a  |
+----+
|  1 |
|  2 |
| 11 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 31 |
| 41 |
+----+
10 rows in set (0.00 sec)
```


## 步骤 21 输出样例
```sql
> SHOW VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 10    |
+--------------------------+-------+
1 row in set (0.00 sec)
```