show status

どれだけのデータが変更されているか把握する事で、
データベースをどのように調整したら良いかある程度デザインする上での指標になるかと思います。

データ追加頻度

mysql> show status like '%insert%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Com_insert             | 1     |INSERTコマンド実行数:再接続すると0にリセットされます
| Com_insert_select      | 0     |
| Delayed_insert_threads | 0     |
| Innodb_rows_inserted   | 1     |起動からのInnoDB Row Insert累計件数
| Qcache_inserts         | 0     |
+------------------------+-------+
5 rows in set (0.00 sec)

mysql> insert into TABLE001(title,comment) values('confirmation','Innodb_rows_inserted time 2');
Query OK, 1 row affected (0.42 sec)

mysql> show status like '%insert%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Com_insert             | 2     |
| Com_insert_select      | 0     |
| Delayed_insert_threads | 0     |
| Innodb_rows_inserted   | 2     |
| Qcache_inserts         | 0     |
+------------------------+-------+
5 rows in set (0.00 sec)

mysql>

insert

更新頻度

mysql> show status like '%update%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Com_update          | 0     | UPDATEコマンド実行数:再接続すると0にリセットされます
| Com_update_multi    | 0     |
| Handler_update      | 0     | Update Row数:再接続すると0にリセットされます
| Innodb_rows_updated | 0     | 起動からのInnoDB Row Update累計件数
+---------------------+-------+
4 rows in set (0.00 sec)

mysql> select * from TABLE001 where id = 39;
+----+--------------+----------------------+
| id | title        | comment              |
+----+--------------+----------------------+
| 39 | confirmation | Com_update increment |
+----+--------------+----------------------+
1 row in set (0.00 sec)

mysql> update TABLE001 set comment = 'Innodb_rows_updated test1' where id = 39;
Query OK, 1 row affected (0.49 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> show status like '%update%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Com_update          | 1     |
| Com_update_multi    | 0     |
| Handler_update      | 1     |
| Innodb_rows_updated | 1     |
+---------------------+-------+
4 rows in set (0.00 sec)

mysql> 

update

削除頻度

mysql> show status like '%delete%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Com_delete          | 0     |
| Com_delete_multi    | 0     |
| Handler_delete      | 0     |
| Innodb_rows_deleted | 0     |
+---------------------+-------+
4 rows in set (0.00 sec)

mysql>  delete from TABLE001 where id > 40;
Query OK, 5 rows affected (0.44 sec)

mysql> show status like '%delete%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| Com_delete          | 1     | DELETEコマンド実行数:再接続すると0にリセットされます
| Com_delete_multi    | 0     | 
| Handler_delete      | 5     | DELETE Row数:再接続すると0にリセットされます
| Innodb_rows_deleted | 5     | 起動からのInnoDB Row Delete累計件数
+---------------------+-------+
4 rows in set (0.00 sec)

mysql>

delete

並列状態

mysql> show status like '%threads%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| Delayed_insert_threads | 0     |
| Slow_launch_threads    | 0     |
| Threads_cached         | 0     |
| Threads_connected      | 2     | 取得した瞬間の値
| Threads_created        | 5     | 起動から作成されたスレッド数累計
| Threads_running        | 2     | 取得した瞬間の値
+------------------------+-------+
6 rows in set (0.00 sec)

mysql>

mysql> show processlist;
+----+------------+--------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| Id | User       | Host         | db   | Command     | Time | State                                                                 | Info             |
+----+------------+--------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
|  3 | slave_user | home002:4367 | NULL | Binlog Dump | 5203 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL             |
|  5 | root       | localhost    | test | Query       |    0 | NULL                                                                  | show processlist |
+----+------------+--------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
2 rows in set (0.00 sec)

mysql>



MYSQLのシステム状況を確認する方法

mysql>

show status;

+———————————–+———–+
| Variable_name | Value |
+———————————–+———–+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 5433 |
| Bytes_sent | 33501 |
| Com_admin_commands | 0 |

………

| Threads_cached | 0 |
| Threads_connected | 1 |
| Threads_created | 1 |
| Threads_running | 1 |
| Uptime | 16145 |
| Uptime_since_flush_status | 16145 |
+———————————–+———–+
267 rows in set (0.48 sec)

[root@colinux ~]#

mysqladmin extended-status -u root -p

Enter password:
+———————————–+———-+
| Variable_name | Value |
+———————————–+———-+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 5535 |
| Bytes_sent | 40218 |
| Com_admin_commands | 0 |
| Com_assign_to_keycache | 0 |

………

| Threads_cached | 0 |
| Threads_connected | 1 |
| Threads_created | 2 |
| Threads_running | 1 |
| Uptime | 16594 |
| Uptime_since_flush_status | 16594 |
+———————————–+———-+
[root@colinux ~]#


MYSQL Administrator –> Health —> Status Variables

status_variable

データの場所やら現在の接続数など。。。
showstatus

MYISAMのキーバッファーが少ない事を確認して一時的に増やしたり….
key_buffer

※ global server system variableを設定するには、「SUPER」権限が必要です。
※ SET GLOBALは、 設定を実行した後にMYSQLに接続してくる全てのクライアントに適用されます。

————–以下のコマンドは同じ設定変更をします———————-  
set global key_buffer_size = 5 * 1024 * 1024;
set @@global.key_buffer_size = 5 * 1024 * 1024;
—————————————————————————————

buffer

ちなみにSYSMTEM VARIABLESは、幾つかの方法で設定が可能です。

1 ) MYSQLのオプションファイル(永続的)
2 ) mysqldコマンドでサーバーを立ち上げる時のスタートアップオプションとして
3 ) SET GLOBALコマンド
4 ) SET SESSION(or SET LOCAL)コマンド

どのようなコマンドが何回実行されたかが、show statusから判断可能…………

mysql> show status like ‘Com_%’;
+—————————+——-+
| Variable_name | Value |
+—————————+——-+
| Com_admin_commands | 0 |
| Com_assign_to_keycache | 0 |
| Com_alter_db | 0 |
| Com_alter_db_upgrade | 0 |
| Com_alter_event | 0 |
| Com_alter_function | 0 |
| Com_alter_procedure | 0 |
| Com_alter_server | 0 |
…………………….

| Com_xa_prepare | 0 |
| Com_xa_recover | 0 |
| Com_xa_rollback | 0 |
| Com_xa_start | 0 |
| Compression | OFF |
+—————————+——-+
143 rows in set (0.27 sec)

ちなみに、Query Cache上で実行されたSELECTは記録されません。

select

Query Cache上で実行された回数は、「Qcache_hits」からカウント出来るよう…..です。

mysql> show status like ‘Qcache_hits’;
+—————+——-+———
| Variable_name | Value |
+—————+——-+———
| Qcache_hits | 23 |
+—————+——-+———
1 row in set (0.35 sec)

——————————————————————–
おまけ
稼働時間、スレッド数、Query。。。。など
——————————————————————–
[root@colinux ~]# mysqladmin -u root status -p
Enter password:
Uptime: 475 Threads: 1 Questions: 7 Slow queries: 0 Opens: 17 Flush tables: 1 Open tables: 4 Queries per second avg: 0.14

[root@colinux ~]#