ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

MariaDB のリリースとそのベンチマーク結果取得

こんにちは、ニフティクラウド テクニカルアカウントエンジニアチームです。

2016年9月7日に、ニフティクラウドRDBで利用可能なDBエンジンに「MariaDB」が加わりました。 本記事ではMariaDBエンジンでのベンチマーク値を取得したためその結果をご紹介します。

MariaDBリリースについて

ニフティクラウドRDBで利用可能なDBエンジン

今回のリリースにより、利用可能な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をご利用の際はぜひ、上記の結果をご参考にしてください。

ニフティクラウドRDB(MariaDB)

注:本検証結果はあくまでご参考となります。 利用条件、構成、オプションなどにより性能は大きく異なる可能性があるため、ご利用の際は、実環境に合わせてチューニングしていただければと思います。