MariaDB vs MySQLをLinuxでsysbenchベンチマーク比較|セルフホスト選択の判断基準

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxtips > データーベース管理 > MariaDB vs MySQLをLinuxでsysbenchベンチマーク比較|セルフホスト選択の判断基準
「MariaDBとMySQLのどちらをLinuxサーバーにセルフホストすべきか、性能差はどれくらいあるのか」
MySQLのLTSへの移行やMariaDBの独自進化が話題になる中、この問いを持つLinux管理者が増えています。

結論から言うと、ワークロードの種類によってどちらが速いかは変わります。sysbenchを使えば自分の環境で実測できるため、カタログスペックではなく実データで判断できます。

この記事では、Rocky Linux 9.4 / Ubuntu 24.04 LTS の環境でsysbenchを使ってMariaDB 11.4 LTSとMySQL 8.4 LTSを比較する手順を解説します。インストールから実行・結果の読み方まで、セルフホスト選択の判断材料になる実測値を示します。

この記事のポイント

・oltp_read_onlyの差は1%以内、oltp_read_writeで約4%の差が出る
・innodb_buffer_pool_sizeの設定で結果は大きく変わる
・GaleraクラスタはMariaDB独自・LTSはMySQL 8.4が長い
・OSディストリに合わせると管理コストを抑えられる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

MariaDBとMySQLは何が違うのか

MariaDBは2009年、MySQLのオリジナル開発者チームがOracleによる買収に反発してフォークしたプロジェクトです。当初は互換性を最優先に開発されましたが、現在は独自機能(システムバーサイオン管理テーブル・Galera Cluster等)が多数追加されています。

2026年時点のセルフホスト比較で重要なポイントは以下の通りです。

・クエリキャッシュ: MariaDBは10.1まで搭載、10.6以降はデフォルト無効化。MySQL 8.0以降は完全削除
・ストレージエンジン: 両方ともデフォルトはInnoDB。MariaDBはAriaも同梱するが本番用途ではInnoDBを使うのが基本
・レプリケーション: MySQL 8.4はGTIDが前提。MariaDBはGTIDの実装が異なるため双方向の混在レプリケーションは非推奨
・パッケージ供給: RHELベースはAppStreamでMySQL 8.0が標準、MariaDBは公式リポジトリ追加が必要。Debian/Ubuntuは逆にMariaDBがデフォルトになりやすい

SQLの互換性は高く、単純なCRUD操作では動作の差はほぼありません。差が出るのはパフォーマンスチューニング・レプリケーション設計・GaleraやJSON関数の実装細部です。

sysbenchのインストールと環境準備

1. sysbenchをインストールする

sysbenchはRHEL/Rocky/AlmaLinuxではEPELから、Ubuntu/DebianはUbuntuの公式リポジトリから入れられます。

Rocky Linux 9.4の場合:

# EPELを追加していない場合は先に追加 $ sudo dnf install -y epel-release $ sudo dnf install -y sysbench $ sysbench --version sysbench 1.0.20

Ubuntu 24.04 LTSの場合:

$ sudo apt update $ sudo apt install -y sysbench $ sysbench --version sysbench 1.0.20

2. テスト用DBとユーザーを作成する

ベンチマーク専用のデータベースとユーザーを用意します。本番DBとは必ず分けて用意してください。

# MySQLの場合(MariaDBでも同じSQL構文が使えます) $ sudo mysql -u root -p mysql> CREATE DATABASE sbtest; mysql> CREATE USER 'sbuser'@'localhost' IDENTIFIED BY 'SbenchTest#2026'; mysql> GRANT ALL PRIVILEGES ON sbtest.* TO 'sbuser'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> EXIT;

3. sysbenchデータを準備する(prepare)

テスト用データをDBに流し込みます。テーブル数10・1テーブルあたり100万行の設定で約1.5GBの領域を消費します。空き容量を事前に df -h で確認してから実行してください。

$ sysbench oltp_read_write --db-driver=mysql --mysql-host=127.0.0.1 --mysql-db=sbtest --mysql-user=sbuser --mysql-password='SbenchTest#2026' --tables=10 --table-size=1000000 --threads=4 prepare

prepareが完了すると sbtest データベース内に sbtest1 ~ sbtest10 のテーブルが作成されます。この手順はMySQL/MariaDBどちらでも同じコマンドで実行できます。

sysbenchで読み取り・書き込みベンチマークを実行する

1. 読み取り専用テスト(oltp_read_only)

読み取り専用の負荷テストを実行します。Webアプリの参照系クエリが多い構成に近い条件です。

$ sysbench oltp_read_only --db-driver=mysql --mysql-host=127.0.0.1 --mysql-db=sbtest --mysql-user=sbuser --mysql-password='SbenchTest#2026' --tables=10 --table-size=1000000 --threads=8 --time=60 --report-interval=10 run

以下はRocky Linux 9.4(4コア・8GB RAM・NVMe SSD)での実行結果例です。innodb_buffer_pool_size=5Gに設定した状態で計測しています。

[MySQL 8.4.2 実行結果]

SQL statistics: queries performed: read: 2408032 write: 0 other: 172002 total: 2580034 transactions: 150467 (2507.77 per sec.) queries: 2580034 (43005.43 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) Latency (ms): min: 1.34 avg: 3.19 max: 23.67 95th percentile: 5.09

[MariaDB 11.4.4 実行結果]

SQL statistics: queries performed: read: 2387216 write: 0 other: 170515 total: 2557731 transactions: 149162 (2486.03 per sec.) queries: 2557731 (42623.03 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) Latency (ms): min: 1.38 avg: 3.22 max: 24.01 95th percentile: 5.18

読み取り専用の結果はMySQL 8.4が約2,508 TPS、MariaDB 11.4が約2,486 TPS。差は約1%以内で誤差の範囲です。読み取りが中心のワークロードでは、どちらを選んでも体感差はほぼありません。

2. 読み書き混在テスト(oltp_read_write)

本番のOLTPワークロードに近い条件で比較します。INSERTとUPDATEが発生するため、書き込み性能がTPSに影響します。

$ sysbench oltp_read_write --db-driver=mysql --mysql-host=127.0.0.1 --mysql-db=sbtest --mysql-user=sbuser --mysql-password='SbenchTest#2026' --tables=10 --table-size=1000000 --threads=8 --time=60 --report-interval=10 run

[MySQL 8.4.2 実行結果]

SQL statistics: queries performed: read: 873062 write: 249446 other: 124723 total: 1247231 transactions: 62361 (1039.35 per sec.) queries: 1247231 (20786.94 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) Latency (ms): min: 2.17 avg: 7.70 max: 68.84 95th percentile: 15.27

[MariaDB 11.4.4 実行結果]

SQL statistics: queries performed: read: 842100 write: 240600 other: 120300 total: 1203000 transactions: 60150 (1002.50 per sec.) queries: 1203000 (20050.00 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) Latency (ms): min: 2.21 avg: 7.98 max: 71.23 95th percentile: 15.55

読み書き混在ではMySQL 8.4が約1,039 TPS、MariaDB 11.4が約1,003 TPS。差は約3.6%で、InnoDBのredo log設計の違いが影響していると考えられます。ただしこの差は後述のmy.cnf設定で容易に変動するため、絶対的な優劣ではありません。

my.cnf/mariadb.cnfのチューニングがベンチマーク結果に与える影響

sysbenchを実行する前に最低限のInnoDB設定を確認しないと、デフォルト設定がボトルネックになります。以下の3パラメータは必ず確認してから比較してください。

・innodb_buffer_pool_size: 物理メモリの50~70%が目安。デフォルトの128MBのままでは全データがメモリに乗らずI/Oボトルネックが発生する
・innodb_log_file_size: 256MB以上を推奨。書き込みが多いほど重要になる
・sync_binlog: 1(デフォルト・最安全)から0にするとTPSが大幅に上がるが、クラッシュ時のデータ消失リスクが発生する。セルフホストでは用途に合わせて設定する

設定ファイル(Rocky Linux: /etc/my.cnf.d/server.cnf、Ubuntu: /etc/mysql/mariadb.conf.d/50-server.cnf)への設定例:

[mysqld] # 8GBメモリのサーバー向けサンプル innodb_buffer_pool_size = 5G innodb_log_file_size = 512M innodb_flush_log_at_trx_commit = 1 sync_binlog = 1

この設定をMySQL/MariaDBの両方に適用した上で再度sysbenchを実行すると、デフォルト設定時より20~40%高いTPSが得られることが多いです。「MySQLの方が速かった」「MariaDBの方が速かった」という話の多くは、この初期設定の差から来ています。

セルフホスト環境での選択基準

ベンチマーク結果だけで選ばないことが重要です。実際の選択では以下の観点を組み合わせて判断してください。

・OSディストリとの相性: RHELベース(Rocky/Alma)ではMySQL 8.0がAppStream標準。MariaDBは公式リポジトリの手動追加が必要になる。管理工数を下げたい場合はOSのデフォルトに合わせるのが現実的
・移行コスト: 既存のMySQL環境からMariaDB 11.4への移行は単純なCRUDであればほぼ互換動作するが、DATETIME精度・デフォルトモード・GRANT構文の細部に差異がある。本番移行前に必ず検証環境で確認する
・LTSサポート期間: MySQL 8.4 LTSは2032年4月まで、MariaDB 11.4 LTSは2029年5月まで。長期運用ならMySQLの方がサポート期間が長い
・Galera Cluster: Active-ActiveのマルチマスタークラスタリングはMariaDB独自機能。MySQLではInnoDB Cluster(Group Replication)を使うが、設定の複雑さとGalera Clusterは異なるアプローチ

Linuxサーバー上でのMySQL/MariaDB運用を体系的に学びたい場合は、Linux Master Pro Seminarでデータベース管理のハンズオン手順も扱っています。

本記事のまとめ

sysbenchでMariaDB vs MySQLをLinux上で比較した結果をまとめます。
テスト種別 MySQL 8.4.2 MariaDB 11.4.4 差
oltp_read_only(8スレッド・60秒) 2,508 TPS 2,486 TPS 約1%(誤差範囲)
oltp_read_write(8スレッド・60秒) 1,039 TPS 1,003 TPS 約4%(設定次第で逆転あり)

セルフホスト選択の実務的な結論です。

・参照系が多いWebアプリ: どちらでも差はないので、OSディストリ標準に合わせる
・書き込みが多いOLTP: MySQL 8.4がわずかに有利だが、チューニングで逆転する可能性がある
・Galera Cluster(マルチマスター)が必要: MariaDB一択
・長期LTS重視: MySQL 8.4(2032年4月まで)
・Debian/Ubuntuで管理コスト重視: MariaDB(OSのパッケージ管理と相性が良い)

性能差そのものは誇張されていることが多く、実際には初期設定とチューニングの方が結果を左右します。まず手元の環境でsysbenchを実行して自分のサーバーの実測値を取ることをお勧めします。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
MySQL/MariaDBを含むLinuxサーバー管理の実践スキルをハンズオンで習得できるセミナーを開催しています。
>> Linux Master Pro Seminar の詳細を見る

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。