MySQLのLIKE句を使って複数のシステム変数を一度に表示する方法
MySQLでは、SHOW VARIABLES文とLIKE句を組み合わせることで、名前が特定のパターンに一致するシステム変数だけを絞り込んで表示できます。さらにOR条件を使えば、異なるパターンに一致する複数の変数グループを一度のクエリで取得することも可能です。
基本構文
複数の変数を表示する際の構文は以下の通りです。
show variables where Variable_name like 'yourVariable1%' or Variable_name like 'yourVariable2%',.............N;
実際の使用例
それでは、上記の構文を使って複数の変数(key%、innodb_undo%、innodb_log%に一致する変数)を同時に表示してみましょう。
mysql> show variables where Variable_name like 'key%' or Variable_name like 'innodb_undo%' or Variable_name like 'innodb_log%';
出力結果
+------------------------------------+----------+ | Variable_name | Value | +------------------------------------+----------+ | innodb_log_buffer_size | 1048576 | | innodb_log_checksums | ON | | innodb_log_compressed_pages | ON | | innodb_log_file_size | 50331648 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | .\ | | innodb_log_spin_cpu_abs_lwm | 80 | | innodb_log_spin_cpu_pct_hwm | 50 | | innodb_log_wait_for_flush_spin_hwm | 400 | | innodb_log_write_ahead_size | 8192 | | innodb_undo_directory | .\ | | innodb_undo_log_encrypt | OFF | | innodb_undo_log_truncate | ON | | innodb_undo_tablespaces | 2 | | key_buffer_size | 8388608 | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit | 100 | | keyring_operations | ON | +------------------------------------+----------+ 19 rows in set (0.01 sec)
ポイント解説
Variable_nameカラムに対してLIKE句を適用し、%ワイルドカードで前方一致のパターンを指定しています。条件をORでつなぐことで、InnoDBのログ関連・Undoログ関連、そしてキーキャッシュ関連といった複数カテゴリの変数を1回のクエリで効率的に確認できます。サーバーの設定状況を調査したり、チューニング対象のパラメータを洗い出したりする際に非常に便利なテクニックです。
-
Javaを使用してMySQLテーブルの値を表示する方法
MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87 -> ( -> name varchar(20), -> age int -> )
-
オプション指定によるMySQLプログラム変数の設定方法
多くのMySQLプログラムは、実行時にSETステートメントを使って設定できる内部変数を持っています。実は、これらのプログラム変数の大部分は、サーバー起動時にも、プログラムオプションを指定する場合と同じ構文を使って設定することが可能です。例1:max_allowed_packet変数の設定mysqlクライアントには、通信バッファの最大サイズを制御するmax_allowed_packetという変数が用意されています。この変数を16MBに設定したい場合は、以下のいずれかのコマンドを実行します。mysql --max_allowed_packet=16777216 (または) mysql --max_