## モジュール 3: セッションのみのシステム変数の変更

[`tidb_allow_remove_auto_inc`](https://docs.pingcap.com/tidb/stable/system-variables#tidb_allow_remove_auto_inc) はセッションシステム変数の一つで、それを変更して結果を観察します。

### 手順 1. 接続のセットアップ

+ 以下のリンクをクリックして、ラボ仮想マシンに3つのSSH接続を開きます:
  + [ターミナル 1](ssh://monitor1-ssh#1)
  + [ターミナル 2](ssh://monitor1-ssh#2)
  + [ターミナル 3](ssh://monitor1-ssh#3)

- [ターミナル 1](ssh://monitor1-ssh#1) で、TiDBサーバー2に接続します:

  ```bash
  ./connect-db2.sh
  ```

  ```output
  ...
  tidb:db1>
  ```

- [ターミナル 2](ssh://monitor1-ssh#2) で、TiDBサーバー1に接続します:

  ```bash
  ./connect-db1.sh
  ```

  ```output
  ...
  tidb:db1>
  ```

- [ターミナル 3](ssh://monitor1-ssh#3) で、TiDBサーバー2に接続します:

  ```bash
  ./connect-db2.sh
  ```

  ```output
  ...
  tidb:db2>
  ```

### 手順 2: ターミナル1で `tidb_allow_remove_auto_inc` を `ON` に変更する

- [ターミナル 1](ssh://monitor1-ssh#1) で、以下のコマンドを実行します。

  ```sql
  SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  ```

  ```output
  tidb:db2> SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  +----------------------------+-------+
  | Variable_name              | Value |
  +----------------------------+-------+
  | tidb_allow_remove_auto_inc | OFF   |
  +----------------------------+-------+
  1 row in set (0.00 sec)
  ```

  ```sql
  SET SESSION tidb_allow_remove_auto_inc=ON;
  ```

  ```output
  tidb:db2> SET SESSION tidb_allow_remove_auto_inc=ON;
  Query OK, 0 rows affected (0.00 sec)
  ```

  ```sql
  SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  ```

  ```output
  tidb:db2> SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  +----------------------------+-------+
  | Variable_name              | Value |
  +----------------------------+-------+
  | tidb_allow_remove_auto_inc | ON    |
  +----------------------------+-------+
  1 row in set (0.00 sec)
  ```

### 手順 3. ターミナル2で、`tidb_allow_remove_auto_inc` の値を確認します

- [ターミナル 2](ssh://monitor1-ssh#2) に切り替えて、以下のコマンドを実行します。

  ```sql
  SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  ```

  ```output
  tidb:db1> SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  +----------------------------+-------+
  | Variable_name              | Value |
  +----------------------------+-------+
  | tidb_allow_remove_auto_inc | OFF   |
  +----------------------------+-------+
  1 row in set (0.01 sec)
  ```

### 手順 4. ターミナル3で、`tidb_allow_remove_auto_inc` の値を確認します

- [ターミナル 3](ssh://monitor1-ssh#3) に切り替えて、以下のコマンドを実行します。

  ```sql
  SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  ```

  ```output
  tidb:db2> SHOW SESSION VARIABLES LIKE 'tidb_allow_remove_auto_inc';
  +----------------------------+-------+
  | Variable_name              | Value |
  +----------------------------+-------+
  | tidb_allow_remove_auto_inc | OFF   |
  +----------------------------+-------+
  1 row in set (0.00 sec)
  ```

### 手順 5. 任意のターミナルで、`tidb_allow_remove_auto_inc` の値を変更します

+ グローバルスコープで `tidb_allow_remove_auto_inc` の値を変更してみてください。

  ```sql
  SET GLOBAL tidb_allow_remove_auto_inc=ON;
  ```

  ```output
  tidb:db2> SET GLOBAL tidb_allow_remove_auto_inc=ON;
  ERROR 1228 (HY000): Variable 'tidb_allow_remove_auto_inc' is a SESSION variable and can't be used with SET GLOBAL
  ```

### 手順 6. ターミナル1で、`tidb_allow_remove_auto_inc` を `OFF` に戻します

  ```sql
  SET SESSION tidb_allow_remove_auto_inc=OFF;
  ```

  ```output
  tidb:db2> SET SESSION tidb_allow_remove_auto_inc=OFF;
  Query OK, 0 rows affected (0.00 sec)
  ```

### まとめ

セッション専用のTiDBシステム変数はセッションレベルでのみ設定でき、 `SET SESSION`ステートメントを発行した現在のセッションにその効果が適用されます。
