パフォーマンスを向上させる!MySQLとMariaDBの変数チューニング
MySQLとMariaDBで複数の変数をフィルタリングして表示する方法
特定の条件に合致する複数の変数を表示する
SHOW VARIABLES
コマンドにLIKE
オプションを組み合わせることで、特定の条件に合致する複数の変数を表示することができます。例えば、以下のコマンドは、名前がinnodb
で始まるすべての変数を表示します。
SHOW VARIABLES LIKE 'innodb%';
また、WHERE
句を使って、さらに条件を絞り込むこともできます。例えば、以下のコマンドは、名前がinnodb
で始まり、値がON
であるすべての変数を表示します。
SHOW VARIABLES LIKE 'innodb%' WHERE Value = 'ON';
複数の変数をまとめて表示する
SHOW VARIABLES
コマンドにIN
オプションを組み合わせることで、複数の変数をまとめて表示することができます。例えば、以下のコマンドは、innodb_buffer_pool_size
、innodb_log_file_size
、innodb_flush_log_at_trx_commit
の3つの変数を表示します。
SHOW VARIABLES IN ('innodb_buffer_pool_size', 'innodb_log_file_size', 'innodb_flush_log_at_trx_commit');
例
以下の例は、SHOW VARIABLES
コマンドを使って、いくつかの変数を表示する方法を示しています。
# すべての変数を表示する
SHOW VARIABLES;
# 名前が`innodb`で始まるすべての変数を表示する
SHOW VARIABLES LIKE 'innodb%';
# 名前が`innodb`で始まり、値が`ON`であるすべての変数を表示する
SHOW VARIABLES LIKE 'innodb%' WHERE Value = 'ON';
# `innodb_buffer_pool_size`、`innodb_log_file_size`、`innodb_flush_log_at_trx_commit`の3つの変数を表示する
SHOW VARIABLES IN ('innodb_buffer_pool_size', 'innodb_log_file_size', 'innodb_flush_log_at_trx_commit');
SHOW VARIABLES
コマンドは、MySQLとMariaDBのサーバー設定変数の値を表示するのに役立ちます。LIKE
オプションとWHERE
句を組み合わせることで、特定の条件に合致する複数の変数を表示することができます。また、IN
オプションを使って、複数の変数をまとめて表示することもできます。
すべての変数を表示する
SHOW VARIABLES;
名前がinnodbで始まるすべての変数を表示する
SHOW VARIABLES LIKE 'innodb%';
名前がinnodbで始まり、値がONであるすべての変数を表示する
SHOW VARIABLES LIKE 'innodb%' WHERE Value = 'ON';
innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_log_at_trx_commitの3つの変数を表示する
SHOW VARIABLES IN ('innodb_buffer_pool_size', 'innodb_log_file_size', 'innodb_flush_log_at_trx_commit');
出力例
# すべての変数を表示する
+------------------------+-------------------+
| Variable_name | Value |
+------------------------+-------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| back_log | 80 |
| binlog_cache_size | 32768 |
| binlog_format | ROW |
| ... | ... |
# 名前が`innodb`で始まるすべての変数を表示する
+------------------------+-------------------+
| Variable_name | Value |
+------------------------+-------------------+
| innodb_buffer_pool_size | 134217728 |
| innodb_data_file_path | ibdata1:12M:autoextend |
| innodb_file_per_table | ON |
| innodb_flush_log_at_trx_commit | 1 |
| ... | ... |
# 名前が`innodb`で始まり、値が`ON`であるすべての変数を表示する
+------------------------+-------------------+
| Variable_name | Value |
+------------------------+-------------------+
| innodb_file_per_table | ON |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_log_compressed | ON |
| innodb_support_xa | ON |
| ... | ... |
# `innodb_buffer_pool_size`、`innodb_log_file_size`、`innodb_flush_log_at_trx_commit`の3つの変数を表示する
+------------------------+-------------------+
| Variable_name | Value |
+------------------------+-------------------+
| innodb_buffer_pool_size | 134217728 |
| innodb_log_file_size | 52428800 |
| innodb_flush_log_at_trx_commit | 1 |
- 上記のサンプルコードは、MySQL 8.0とMariaDB 10.5で動作確認済みです。
- 出力内容は、環境によって異なる場合があります。
SHOW VARIABLESコマンド以外で複数の変数を表示する方法
INFORMATION_SCHEMA
データベースには、VARIABLES
テーブルというテーブルがあり、すべてのサーバー設定変数が格納されています。このテーブルをクエリすることで、複数の変数を表示することができます。
SELECT * FROM INFORMATION_SCHEMA.VARIABLES;
# 名前が`innodb`で始まるすべての変数を表示する
SELECT * FROM INFORMATION_SCHEMA.VARIABLES WHERE Variable_name LIKE 'innodb%';
# 名前が`innodb`で始まり、値が`ON`であるすべての変数を表示する
SELECT * FROM INFORMATION_SCHEMA.VARIABLES WHERE Variable_name LIKE 'innodb%' AND Value = 'ON';
# `innodb_buffer_pool_size`、`innodb_log_file_size`、`innodb_flush_log_at_trx_commit`の3つの変数を表示する
SELECT * FROM INFORMATION_SCHEMA.VARIABLES WHERE Variable_name IN ('innodb_buffer_pool_size', 'innodb_log_file_size', 'innodb_flush_log_at_trx_commit');
スクリプトを使用する
MySQLとMariaDBには、mysql
コマンドラインツールやphpMyAdmin
などの管理ツールが付属しています。これらのツールを使って、スクリプトを実行することで、複数の変数を表示することができます。
例えば、以下のスクリプトは、innodb_buffer_pool_size
、innodb_log_file_size
、innodb_flush_log_at_trx_commit
の3つの変数を表示します。
# mysqlコマンドラインツールを使用する場合
mysql -uroot -p -e "SELECT @@innodb_buffer_pool_size, @@innodb_log_file_size, @@innodb_flush_log_at_trx_commit;"
# phpMyAdminを使用する場合
1. phpMyAdminにログインします。
2. 左側のメニューから「データベース」を選択します。
3. データベース一覧から「information_schema」を選択します。
4. テーブル一覧から「VARIABLES」を選択します。
5. 「SQLクエリ」タブに以下のクエリを入力します。
```sql
SELECT * FROM VARIABLES WHERE Variable_name IN ('innodb_buffer_pool_size', 'innodb_log_file_size', 'innodb_flush_log_at_trx_commit');
- 「実行」ボタンをクリックします。
### まとめ
`SHOW VARIABLES`コマンド以外にも、複数の変数を表示する方法はいくつかあります。どの方法を使用するかは、状況によって異なります。
### 参考資料
* MySQL SHOW VARIABLES documentation: [https://dev.mysql.com/doc/refman/8.0/en/show-variables.html](https://dev.mysql.com/doc/refman/8.0/en/show-variables.html)
* MariaDB SHOW VARIABLES documentation: [https://mariadb.com/kb/en/show-variables/](https://mariadb.com/kb/en/show-variables/)
* INFORMATION_SCHEMA VARIABLES table documentation: [無効な URL を削除しました]
mysql mariadb