MySQL/MariadB innodb_buffer_pool_instances 성능테스트 (1)

이동빈·2021년 9월 10일
1

MariaDB에는 'innodb buffer pool instances' 변수 설정이 없다...?

지난 글에 이어서 MySQL 및 MariaDB의 성능 테스트를 진행하였습니다.

MariaDB 10.5 버전부터는 innodb 버퍼 풀이 1개로 동작하는데요, MySQL과 비교하였을 때 성능차이가 어느정도인지 직접 비교해보려고 합니다.

벤치마트 툴은 sysbench이며 oltp_read_only 테스트를 진행하였습니다.

서버 정보

  • Ubuntu 18.04
  • Intel(R) Xeon(R) Silver 4215 CPU @ 2.50GHz * 2
  • 64GB RAM
  • 6TB HDD

Mysql / MariaDB 환경 및 설정

테스트 환경

  • 테이블 40개
  • 테이블 당 1000만 row
  • 총 약 100GB 데이터

MySQL

  • version: MySQL 8.0.26
  • innodb_buffer_pool_size: 24GB
  • innodb_buffer_pool_instances는 1, 4, 8(기본값), 16, 24 값에 대해서 테스트를 진행하였습니다.
  • 최대 64까지 설정 가능하지만, 아래 공식홈페이지 내용에 따라 24까지만 테스트 하였습니다.

For best efficiency, specify a combination of innodb_buffer_pool_instances and innodb_buffer_pool_size so that each buffer pool instance is at least 1GB.
Configuring Multiple Buffer Pool Instances

MariaDB

  • version: MariaDB 10.6.4
  • innodb_buffer_pool_size: 24GB

MySQL 테스트 결과

innodb_buffer_pool_instances=1

  • 총 쿼리수: 39,604,048 (3959.31 per sec)
  • 총 트랜잭션 수: 2,475,253 (247.46 per sec)

innodb_buffer_pool_instances=4

  • 총 쿼리수: 38,473,296 (3846.55 per sec)
  • 총 트랜잭션 수: 2,404,581 (240.41 per sec)

innodb_buffer_pool_instances=8

  • 총 쿼리수: 38,075,408 (3806.49 per sec)
  • 총 트랜잭션 수: 2,379,713 (237.91 per sec)

innodb_buffer_pool_instances=16

  • 총 쿼리수: 37,389,024 (3738.06 per sec)
  • 총 트랜잭션 수: 2,336,814 (233.63 per sec)

innodb_buffer_pool_instances=24

  • 총 쿼리수: 37,317,152 (3730.85 per sec)
  • 총 트랜잭션 수: 2,332,322 (233.18 per sec)

MariaDB 테스트 결과

  • 총 쿼리수: 29,998,288 (2998.17 per sec)
  • 총 트랜잭션 수: 1,874,893 (187.39 per sec)

Total 비교


결론

의외로 MySQL instance가 1일 때 가장 성능이 좋아서 여러번 테스트를 해봤는데 결과는 똑같았습니다.

How Many innodb_buffer_pool_instances Do You Need in MySQL 8?
해당 포스트에서는 innodb_buffer_pool_instances 값이 높아질수록 처리량이 높아졌으나, 저는 낮을 수록 처리량이 높아졌는데, 해당 서버는 SSD이고 제 서버는 HDD 인게 가장 큰 차이인듯 합니다.

SSD는 속도가 빠르기 때문에, 여러 인스턴스가 동시에 접근해도 모두 다 처리할 성능이 되지만,

HDD 속도가 느리기 때문에 여러 인스턴스가 동시에 HDD에 접근하게 되면 병목현상이 발생하여 속도가 더 낮게 나오는게 아닐까 하고 예상해봅니다.

그리고, MariaDB 성능이 MySQL보다 성능차이가 많이나서 이것도 여러번 테스트를 진행하였으나, 결과는 비슷 했습니다. MySQL 성능이 훨씬 좋네요.

다음 글은 SSD에서의 성능 비교입니다.

profile
호기심 많은 개발자

0개의 댓글