第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

バージョンbasedirportinnodb_buffer_pool_size
8.0.18 MySQL Community Server /usr/local/mysql80 3308 512M
10.4.10-MariaDB Server /usr/local/mariadb 3309 512M

※バイナリインストールでフォルダを分けることで同環境に共存を実現

ストレージエンジン

dbexpt13_01.png

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