こんにちは、ニフティクラウド テクニカルアカウントエンジニアチームです。
2016年9月7日に、ニフティクラウドRDBで利用可能なDBエンジンに「MariaDB」が加わりました。 本記事ではMariaDBエンジンでのベンチマーク値を取得したためその結果をご紹介します。
※ニフクラRDBでのMariaDBエンジンの新規利用受付は2023年3月29日に終了しました。
MariaDBリリースについて
今回のリリースにより、利用可能なDBエンジンは上記の通り3つになりました。 MariaDBはMySQLから派生したオープンソースのリレーショナルデータベース管理システムです。
CentOS、RHELの7系より、DBがMySQLからMariaDBに置き換えられているので、利用される機会は増えてくるかと想定しています。
ベンチマーク結果
ベンチ. ツールと構成
今回は、ベンチマークツールに「sysbench」を利用してベンチマークの取得を実施しています。 ベンチマークの取得には、以下シェルを実施しています。 ※結果は各3回ずつコマンドを実行した平均値を取得しています。
シェル:データ準備/性能取得実施/データクリア
$ HOST=$1
OLTP_PARAMS="--test=oltp --oltp-table-size=40000000 --db-driver=mysql"
MYSQL_PARAMS="--mysql-user=mydbuser --mysql-password=password --mysql-host=$HOST"
sysbench $OLTP_PARAMS $MYSQL_PARAMS prepare
sysbench $OLTP_PARAMS $MYSQL_PARAMS --num-threads=16 --max-requests=0 --max-time=180 --init-rng=on --oltp-dist-type=uniform run 2>&1
sysbench $OLTP_PARAMS $MYSQL_PARAMS cleanup
以下の構成で実施しています。
今回のベンチマークでは、MariaDBと比較対象としてMySQLを用いて性能比較しています。 それぞれのバージョン情報を以下に記載します。
DBエンジン | バージョン |
---|---|
MariaDB | 10.1.14 |
MySQL | 5.6.22 |
ベンチ1. シングル構成
まずは単純なシングル構成で、MariaDBとMySQLを性能比較してみます。 サーバータイプdb.small4、db.medium8、db.wlarge32を選定、比較しています。
DBエンジン | タイプ名 | スペック |
---|---|---|
MariaDB | db.small4 | 1vCPU/4GB |
db.medium8 | 2vCPU/8GB | db.wlarge32 | 8vCPU/32GB | MySQL | db.small4 | 1vCPU/4GB |
db.medium8 | 2vCPU/8GB | db.wlarge32 | 8vCPU/32GB |
MariaDBの方が、MySQLに比べて同等かそれ以上の性能が出せています。
ベンチ2. 冗長構成
次に、RDBを冗長構成(データ優先)にした場合の、MariaDBとMySQLを性能比較してみます。 先ほどと同様、db.small4、db.medium8、db.wlarge32を選定し比較しています。
DBエンジン | タイプ名 | スペック |
---|---|---|
MariaDB | db.small4 | 1vCPU/4GB |
db.medium8 | 2vCPU/8GB | db.wlarge32 | 8vCPU/32GB | MySQL | db.small4 | 1vCPU/4GB |
db.medium8 | 2vCPU/8GB | db.wlarge32 | 8vCPU/32GB |
シングル構成に比べると性能は落ちていることが分かります。 また、MariaDBとMySQLで性能を比較するとほぼ同等の性能がでていることが分かります。
ベンチ3. スレッドプール
MariaDBでは5.1系からスレッドプールを標準提供しています。 そのためスレッドプールに関しての性能も測定してみました。
スレッドプールありの場合、なしの場合(default)、MySQLとで性能を比較してみます。 db.xlarge16を選定して比較しています。
DBエンジン(オプション) | タイプ名 | スペック |
---|---|---|
MariaDB(default) | db.xlarge16 | 6vCPU/16GB |
MariaDB(スレッドプール有) | db.xlarge16 | 6vCPU/16GB | MySQL | db.xlarge16 | 6vCPU/16GB |
- スレッドプールのパラメーターとしては、以下を使用しています。 thread_handling=pool-of-threads thread_pool_size=6 max_connections=2048
- 実行コマンドとしては「num-threads」を、以下のパターンで実行しています。 8,16,32,64,128,256,512
num-threadsを上げていくと、スレッドプールありのベンチマークが一番性能がでていない状況になってしまいました。。。。
ここで、スレッドプールの性能に影響すると言われている「thread_pool_size」のパラメーターを6から36にして実施してみます。
結果として、スレッドプールあり(thread_pool_size=36)で大幅に性能が改善し、一番性能がでているものもあることが分かります。
そのため今回の検証結果からはオプション(パラメーター)の変更によって大きく性能が変わったということになります。
まとめ
MariaDBに関して、MySQLと同等かそれ以上の性能を出してくれそうです。
MariaDBをご利用の際はぜひ、上記の結果をご参考にしてください。
注:本検証結果はあくまでご参考となります。 利用条件、構成、オプションなどにより性能は大きく異なる可能性があるため、ご利用の際は、実環境に合わせてチューニングしていただければと思います。