MySQL innoDBの性能関連の設定値とステータス確認

MySQL innoDBの性能に関係する設定値とステータス確認方法についてです。

(1)innoDBの性能に関係するサーバーシステム変数


 
1)主なサーバーシステム変数

mysql> show variables like 'innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF            |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 8              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | OFF            |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 31457280       |
+-------------------------------------+----------------+

mysql> show variables like 'innodb_log%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| innodb_log_buffer_size      | 1048576  |
| innodb_log_compressed_pages | ON       |
| innodb_log_file_size        | 50331648 |
| innodb_log_files_in_group   | 2        |
| innodb_log_group_home_dir   | .\       |
+-----------------------------+----------+

mysql> show variables like 'innodb_flush%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout    | 1     |
| innodb_flush_log_at_trx_commit | 1     |
| innodb_flush_method            |       |
| innodb_flush_neighbors         | 1     |
| innodb_flushing_avg_loops      | 30    |
+--------------------------------+-------+

 
2)変数の内容とチューニングの注意点
 
①innodb_buffer_pool_size
 
・テーブルのデータとインデックスの両方をキャッシュするのに使用するメモリバッファのサイズ。
 
・InnoDBのみを利用する専用データベースサーバーの場合は、メインメモリの80%程度を割り当てる。
 
・物理メモリの競合が起きるとOSのページングが発生。
 
・バッファや制御構造用にこの設定値より10%程余分にメモリが割り当てられる。
 
・このアドレス領域は連続している必要があるのでWindowsの場合はDLLのロード領域と競合する恐れがある。
 
・設定値が大きくなる程バッファプールの初期化の時間も増大する。
※参考サイト
http://dev.mysql.com/doc/refman/5.1/en/innodb-buffer-pool.html
 
②innodb_log_file_size
 
・innodb_buffer_pool_sizeの25%~100%。
 
・ログファイルがどの程度頻繁に切り替わっているかをチェックする。
 
・値を大きくするとチェックポイントでバッファプールをフラッシュする頻度が少なくなりディスクI/Oが軽減できるが、クラッシュ後のリカバリ時間が長くなる。
 
③innodb_flush_log_at_trx_commit
 
・0 (最速)
 ログバッファが毎秒1回(またはそれ以下)ログファイルに書き込まれ、ディスクにフラッシュ。
 
・1 (遅い)
 コミット時にログバッファがログファイルに書き込まれ、ディスクにフラッシュ。真のACID。
 
・2 (速い)
 コミット時にはOSのキャッシュにログをフラッシュ、ディスクとのシンクは毎秒1回。
 

(2)ステータス確認


 
ファイル IO、バッファプール、ログ情報、行/ロック情報などのInnoDBの内部での稼働情報を表示

mysql> SHOW ENGINE INNODB STATUS \G
*************************** 1. row ***************************
  Type: InnoDB
  Name:
Status:
=====================================
2015-01-28 17:47:50 15a0 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 26 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 0 srv_active, 0 srv_shutdown, 2370 srv_idle
srv_master_thread log flush and writes: 2370
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 2
OS WAIT ARRAY INFO: signal count 2
Mutex spin waits 6, rounds 14, OS waits 0
RW-shared spins 2, rounds 60, OS waits 2
RW-excl spins 0, rounds 0, OS waits 0
Spin rounds per wait: 2.33 mutex, 30.00 RW-shared, 0.00 RW-excl
------------
TRANSACTIONS
------------
Trx id counter 5072898
Purge done for trx's n:o < 5067802 undo n:o < 0 state: running but idle
History list length 593
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 2, OS thread handle 0x15a0, query id 28 localhost ::1 root init
SHOW ENGINE INNODB STATUS
--------
FILE I/O
--------
I/O thread 0 state: wait Windows aio (insert buffer thread)
I/O thread 1 state: wait Windows aio (log thread)
I/O thread 2 state: wait Windows aio (read thread)
I/O thread 3 state: wait Windows aio (read thread)
I/O thread 4 state: wait Windows aio (read thread)
I/O thread 5 state: wait Windows aio (read thread)
I/O thread 6 state: wait Windows aio (write thread)
I/O thread 7 state: wait Windows aio (write thread)
I/O thread 8 state: wait Windows aio (write thread)
I/O thread 9 state: wait Windows aio (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
 ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
447 OS file reads, 5 OS file writes, 5 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 62, seg size 64, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 124633, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 1628653970
Log flushed up to   1628653970
Pages flushed up to 1628653970
Last checkpoint at  1628653970
0 pending log writes, 0 pending chkp writes
8 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 31883264; in additional pool allocated 0
Dictionary memory allocated 38251
Buffer pool size   1920
Free buffers       1487
Database pages     433
Old database pages 0
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0 single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 433, created 0, written 1
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 433, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Main thread id 160, state: sleeping
Number of rows inserted 0, updated 0, deleted 0, read 0
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です