第13回:MySQLとMariaDBの比較
技術者向け・データベースの技術情報発信
皆様、こんにちは。
MySQLとMariaDBについて最新バージョンをインストールし、各DBの違いについて検証を行いました。
目次
1.検証環境
自分のPC上のVirtualbox6.0.10上に「CentOS Linux release 7.6」を構築し検証しました。
【ホストOS】
OS:Windows10
CPU:コア数4、スレッド数8
メモリ:8GB
VM:Virtualbox6.0.10
【ゲストOS】
OS:CentOS Linux release 7.6
CPU:1CPU
メモリ:1G
バージョン | basedir | port | innodb_buffer_pool_size |
---|---|---|---|
8.0.18 MySQL Community Server | /usr/local/mysql80 | 3308 | 512M |
10.4.10-MariaDB Server | /usr/local/mariadb | 3309 | 512M |
※バイナリインストールでフォルダを分けることで同環境に共存を実現
ストレージエンジン
MySQL | MariaDB | |
---|---|---|
ARCHIVE | 〇 | |
Aria | 〇 | |
BLACKHOLE | 〇 | |
CSV | 〇 | 〇 |
FEDERATED | 〇 | |
InnoDB | ● | ● |
MEMORY | 〇 | 〇 |
MRG_MYISAM | 〇 | 〇 |
MyISAM | 〇 | 〇 |
PERFORMANCE_SCHEMA | 〇 | 〇 |
SEQUENCE | 〇 |
※●はデフォルトストレージエンジン
文字コード
mysql> status -------------- ~省略~ Server characterset: utf8mb4 Db characterset: utf8mb4 ~省略~ -------------- MariaDB [(none)]> status -------------- ~省略~ Server characterset: latin1 Db characterset: latin1 ~省略~ --------------
MySQL | MariaDB | |
---|---|---|
character_set_server | utf8mb4 | latin1 |
character_set_database | utf8mb4 | latin1 |
MariaDBで日本語(マルチバイト)を使用するにはUTF8に変更する必要があります。
その他パラメータ差異については、下記のURLを参照ください。
https://mariadb.com/kb/en/library/system-variable-differences-between-mariadb-104-and-mysql-80/
2.パフォーマンス検証
負荷ツール「mysqlslap」を使いパフォーマンス検証を行いました。
mysqlslapとは
MySQLが公式でサポートしている負荷エミュレーションクライアントです。MySQLサーバのクライアント負荷をエミュレートし、各ステージのタイミングを報告する診断プログラムです。
試験ケース
項目 | 設定値 |
---|---|
スレッド数 | 50 |
データ件数 | 1000 |
クエリ数 | 1000 |
NO | ケース |
---|---|
1 | read(テーブルスキャン) |
2 | write(テーブルへの挿入) |
3 | key(主キー読み取り) |
4 | mixed(挿入とテーブルスキャンを半々) |
5 | update(更新) |
3.検証結果
ケース | 平均(Average number of seconds)※単位:秒 | |
MySQL 8 | MariaDB 10 | |
read(テーブルスキャン) | 7.125 | 6.011 |
write(テーブルへの挿入) | 0.463 | 0.221 |
key(主キー読み取り) | 0.2 | 0.16 |
mixed(挿入とテーブルスキャンを半々) | 0.365 | 0.235 |
update(更新) | 0.559 | 0.274 |
※特定条件(PC上の仮想環境上、デフォルトパラメータ、負荷ツール)での性能試験結果となりますので、参考情報としてお考え下さい。