Avatar
임호현
좋아요
댓글
[FAQ/MARIADB] Innodb_buffer_pool_size 사이즈 축소 실패

Question

innodb_buffer_pool_size는 10.2.2 부터는 dynamic 하게 변경되는 걸로 알고 있는데요.
12GB에서 8GB로 줄이는 시도를 했는데 바로 적용이 안되는 이유가 무엇인가요?

 

Answer

"show engine innodb status \G;" 명령의 결과를 보시면 각 버퍼 풀 인스턴스 마다 free block을 확인 가능합니다.  거의 모두 사용 중인 경우 사이즈를 줄일 수 없습니다.
아래의 메시지를 보시면 free list에서 0 blocks을 withdrew 했다고 되어 있으며 이는 Free list에 withdrew 할 block이 없어 축소에 실패한 것 입니다.


2020-04-16 13:46:26 0 [Note] InnoDB: buffer pool 7 : withdrawing blocks. (32757/32768)
2020-04-16 13:46:26 0 [Note] InnoDB: buffer pool 7 : withdrew 0 blocks from free list. Tried to relocate 0 pages(32757/32768).
2020-04-16 13:46:26 0 [Note] InnoDB: buffer pool 7 : will retry to withdraw later.
2020-04-16 13:46:26 0 [Note] InnoDB: Will retry to withdraw 10 seconds later.
2020-04-16 13:46:36 0 [Note] InnoDB: buffer pool 0 : start to withdraw the last 32768 blocks.
2020-04-16 13:46:36 0 [Note] InnoDB: buffer pool 0 : withdrawing blocks. (32725/32768)
2020-04-16 13:46:36 0 [Note] InnoDB: buffer pool 0 : withdrew 0 blocks from free list. Tried to relocate 0 pages(32725/32768).

특히 이번 축소 실패는 수행 중이었던 Batch 쿼리에 의해 Dirty Block이 너무 많았기 때문에 free list에 withdrew할 block이 없어 발생하였습니다.