MySQLデータベースパラメータの表示と変更
MySQLはSQLの処理と実行を制御するために多数のパラメータに依存しています。mysql.cnfファイルはmysqlのデフォルトのパラメータ設定ファイルであり、mysqlが起動すると、特定の場所でこのファイルを見つけて読み取ります。my.cnfがなくても、MySQLインスタンスの初期起動に影響はありません。パラメータ値は、MySQLのコンパイル時に指定されたデフォルト値と、ソースコードで指定されたパラメータのデフォルト値によって異なります。
1つは、MySQLパラメータの分類
MySQLパラメータは、静的(静的)パラメータと動的(動的)パラメータに分けることができますが、インスタンスのライフサイクル中にパラメータ値を変更して有効にできるかどうかが異なります。
1.静的パラメーター
静的パラメーターは、データベースの起動時に変更できません。静的パラメーターの設定を有効にするには、再起動する必要があります。例:log_slave_updates、back_log、log_bin、lower_case_table_names。静的パラメータの場合、グローバルレベルとセッションレベルの違いはありません。
2.動的パラメーター
動的パラメータはデータベースの起動時に変更できます。動的パラメータは、グローバルレベルとセッションレベルの2つのタイプに分けられます。セッションスコープの変更は、開かれ、後で開かれた他のセッションには影響しません。グローバルスコープパラメーターの値が変更されると、変更前に開かれていたセッションは有効にならず、新しく作成されたセッションで有効になります。
2、MySQLパラメータビュー
例としてwait_timeoutパラメータを取ります:
1.グローバルパラメータを表示する
方法1:
mysql> select @@global.wait_timeout;
+-----------------------+
| @@global.wait_timeout |
+-----------------------+
| 28800 |
+-----------------------+
1 row in set (0.00 sec)
方法2:
mysql> show global variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28800 |
+--------------------------+----------+
3 rows in set (0.01 sec)
方法3:
mysql> select * from performance_schema.global_variables where variable_name ='wait_timeout';
+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| wait_timeout | 28800 |
+---------------+----------------+
1 row in set (0.00 sec)
mysql> select * from performance_schema.global_variables where variable_name like '%wait_timeout%';
+--------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------+----------------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28800 |
+--------------------------+----------------+
3 rows in set (0.01 sec)
2.セッションレベルのパラメーターを表示する
方法1:
mysql> select @@wait_timeout;
+----------------+
| @@wait_timeout |
+----------------+
| 28800 |
+----------------+
1 row in set (0.00 sec)
方法2:
mysql> select @@session.wait_timeout;
+------------------------+
| @@session.wait_timeout |
+------------------------+
| 28800 |
+------------------------+
1 row in set (0.00 sec)
方法3:
mysql> show variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28800 |
+--------------------------+----------+
3 rows in set (0.00 sec)
方法4:
mysql> show session variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28800 |
+--------------------------+----------+
3 rows in set (0.00 sec)
方法5:
mysql> select * from performance_schema.session_variables where variable_name like '%wait_timeout%';
+--------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------+----------------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28800 |
+--------------------------+----------------+
3 rows in set (0.00 sec)
3、MySQLパラメータの変更
1.セッションレベルのパラメーターの変更
方法1:
mysql> set wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
方法2:
mysql> set session wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
方法3:
mysql> set @@wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
方法4:
mysql> set @@session.wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
2.グローバルレベルのパラメーターの変更
方法1:
mysql> set global wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
方法2:
mysql> set @@global.wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)
4番目に、パラメータ値をMySQLのデフォルト値に設定します
1.セッションレベルのパラメーター
mysql> set wait_timeout=DEFAULT;
Query OK, 0 rows affected (0.00 sec)
2.グローバルレベルのパラメーター
mysql> set global wait_timeout=DEFAULT;
Query OK, 0 rows affected (0.00 sec)
5.静的パラメーターの変更と動的パラメーターの永続的な影響
動的パラメータの設定を永続的に有効にする必要がある場合は、パラメータファイルを変更し、MySQLを再起動して有効にする必要があります。静的パラメーターは、パラメーターファイルを変更することによってのみ検証できます。といった:
# vi /etc/my.cnf
[mysqld]
wait_timeout=10