MySQL & Maria DB Innodb_buffer_pool 사용량은 성능에 중요한 Point가 된다. 사용량이 높게되면 Disk I/O가 발생하게 되고 성능이 떨어지게된다.
Innodb_buffer_pool_size는 DOCS에서는 physical memory의 80%로 하는것을 말하고있지만 Real MySQL에서는 50%로 한후 모니터링하며 바꿔나가는 것이 좋다고 한다.
■ WorkBench 사용
■ Query 사용
- Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100을 하게 되면 Innodb_buffer_pool 사용량을 확인할 수 있다.
mysql> show status like '%innodb_buffer_pool%';
+---------------------------------------+----------------------------------------------------+
| Variable_name | Value |
+---------------------------------------+----------------------------------------------------+
| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started |
| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 220321 10:06:44 |
| Innodb_buffer_pool_resize_status | Completed resizing buffer pool at 220321 13:47:00. |
| Innodb_buffer_pool_pages_data | 77340 |
| Innodb_buffer_pool_bytes_data | 1267138560 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 114231 |
| Innodb_buffer_pool_pages_free | 53386 |
| Innodb_buffer_pool_pages_misc | 346 |
| Innodb_buffer_pool_pages_total | 131072 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 152 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 20730686 |
| Innodb_buffer_pool_reads | 3923 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 11708242 |
+---------------------------------------+----------------------------------------------------+
mysql> select 77340/131072*100 from dual;
+------------------+
| 77340/131072*100 |
+------------------+
| 59.0057 |
+------------------+
1 row in set (0.00 sec)
Variable Name
|
Comments
|
Innodb_buffer_pool_dump_status
|
버퍼풀에 보관된 페이지를 기록한 상태
|
Innodb_buffer_pool_load_status
|
버퍼풀이 이전 시점에 해당하는 페이지를 읽음으로 워밍업을 진행한 페이지 수
|
Innodb_buffer_pool_resize_status
|
버퍼풀의 크기를 동적으로 조정하는 작업 상태
|
Innodb_buffer_pool_pages_data
|
전체 버퍼풀에서 현재 사용중인 버퍼풀 페이지 수
|
Innodb_buffer_pool_bytes_data
|
전체 버퍼풀에서 현재 사용중인 버퍼풀 바이트 수
|
Innodb_buffer_pool_pages_dirty
|
버퍼풀의 데이터 중 변경된 페이지 수 (더티페이지 수)
|
Innodb_buffer_pool_bytes_dirty
|
버퍼풀의 데이터 중 변경된 바이트 수(더티 데이터 수)
|
Innodb_buffer_pool_pages_flushed
|
버퍼풀에서 플러시한 페이지 수
|
Innodb_buffer_pool_pages_free
|
전체 버퍼풀에서 사용하지 않은(사용가능한) 페이지 수
|
Innodb_buffer_pool_pages_misc
|
Row lock, hash index 와 같이 오버헤드에 할당되어 사용된 버퍼풀의 페이지 수
|
Innodb_buffer_pool_pages_total
|
전체 버퍼풀의 페이지 수
|
Innodb_buffer_pool_read_ahead_rnd
|
랜덤으로 미리 읽기가 발생한 페이지 수
|
Innodb_buffer_pool_read_ahread
|
미리 읽기 백그라운드 스레드가 버퍼풀로 미리 읽어들인 페이지 수
|
Innodb_buffer_pool_read_ahead_evicted
|
버퍼풀에 미리 읽어들인 페이지 중 사용되지 않고 제거된 페이지 수
|
Innodb_buffer_pool_read_requests
|
버퍼풀에서 논리적인 읽기 요청 횟수
|
Innodb_buffer_pool_reads
|
버퍼풀에 데이터가 없어서 디스크에서 직접 읽은 논리적 수
|
Innodb_buffer_pool_wait_free
|
페이지를 읽거나 생성할때 사용가능한 클린 페이지가 없을 경우 InnoDB가 더티페이지를 비우고 그 작업이 끝나기를 기다리는 값
|
Innodb_buffer_pool_write_requests
|
버퍼풀에 대한 쓰기 횟수
|
■ 참조
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jevida&logNo=221277592365