第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上の仮想環境上、デフォルトパラメータ、負荷ツール)での性能試験結果となりますので、参考情報としてお考え下さい。
