WordPressをSQLiteで動かしてみた!パフォーマンス比較とセットアップ方法
3行まとめ
- SQLiteを使用したWordPressは標準構成より約17%高速で、メモリ使用量が約32%少ない
- DBサーバーが不要になり、設定が簡素化。
- DBへの参照がほとんどの場合や開発環境に最適であり、バックアップも単一ファイルで完結するようになる
背景
WordPressが公式に対応しているデータベースはMySQL(またはMariaDB)のみです。数年前にSQLiteにも対応したいという表明がありましたが、未だに公式サポートの告知はありません。
MySQLは優れたデータベースですが、小規模サイトや開発環境では以下のような課題があります:
- サーバーリソースを多く消費する
- 設定や管理が比較的複雑である
- 小規模サイトではオーバースペックである
一方、SQLiteは:
- 軽量でリソース消費が少ない
- ファイルベースで設定が簡単である
- 小〜中規模のサイトに適している
最近調査したところ、wp-sqlite-dbというdrop-inプラグインを使えばWordPressをSQLiteで動かせることがわかりました。このプラグインはWordPressのデータベース接続層を置き換え、SQLiteを使用できるようにします。
今回はこのプラグインを活用し、WordPressをSQLiteで動かす方法とMySQLとのパフォーマンス比較について紹介します。
セットアップ手順
手軽に試すために、ローカル環境でDocker Composeを使って新規にWordPress環境を構築します。
1. プロジェクトディレクトリの作成
% mkdir sqlite_wordpress
% cd sqlite_wordpress
2. Docker Compose設定ファイルの作成
compose.yml
ファイルを作成し、以下の内容を記述します:
services:
wordpress:
image: wordpress:latest
volumes:
- wp_data:/var/www/html
ports:
- 80:80
restart: always
environment:
WORDPRESS_DB_HOST: dummy
WORDPRESS_DB_NAME: dummy
WORDPRESS_DB_USER: dummy
volumes:
wp_data:
重要なポイント
- DBコンテナが不要: 通常のWordPress構成ではMySQLコンテナが必要だが、SQLiteを使用するため不要である
-
ダミー環境変数: MySQL接続用の環境変数にダミー値を設定する
- これにより、WordPressの初期設定ページでデータベース接続情報の入力をスキップできる
- SQLiteを使用するため、実際にはこれらの値は使用されない
この設定は、WordPressの初期化プロセスを騙して、データベース設定画面をスキップさせるためのものです。SQLite用のdrop-inプラグインがデータベース接続を管理するため、実際のMySQL接続は必要ありません。
3. SQLite用drop-inプラグインのインストール
以下のコマンドを実行してWordPressコンテナに入ります:
docker compose run wordpress bash
コンテナ内で以下のコマンドを実行し、SQLite用のdrop-inプラグインをインストールします:
# wp-contentディレクトリに移動
cd wp-content
# SQLite用のdrop-inファイルをダウンロード
curl https://raw.githubusercontent.com/aaemnnosttv/wp-sqlite-db/refs/heads/master/src/db.php > db.php
# SQLiteデータベースファイル用のディレクトリを作成
mkdir database
# 権限を設定(Webサーバーがファイルを書き込めるようにする)
chown www-data database
これらのコマンドで:
- WordPressのデータベース接続処理を置き換えるdrop-inファイル(db.php)をダウンロード
- SQLiteデータベースファイルを保存するディレクトリを作成
- Webサーバープロセス(www-data)がデータベースファイルに書き込めるよう権限を設定
これでSQLite用の設定は完了です。シンプルな3ステップで、WordPressをSQLiteで動かす準備が整いました。
起動と初期設定
1. WordPressコンテナの起動
次のコマンドでWordPressコンテナを起動します:
docker compose up
2. 初期設定の実施
コンテナが起動したら、ブラウザで以下のURLにアクセスします:
http://localhost/
初期設定の流れ
-
言語選択画面
最初に言語選択画面が表示されます。日本語を選択します。
-
サイト情報設定画面
次に管理者アカウントとサイト名を設定する画面が表示されます。
注目ポイント: 通常のWordPress設定では、この前にデータベース接続情報の入力画面がありますが、環境変数を設定しているためスキップされています。
-
設定完了
必要情報を入力して「WordPressをインストール」ボタンをクリックすると初期化が完了します。SQLiteのデータ自体は、デフォルトでは
wp-content/database/.ht.sqlite
に保存されます。変更したい場合は環境変数で設定できます。
3. 管理画面へのログイン
設定したユーザー名とパスワードで管理画面にログインすれば、WordPressの利用を開始できます。
使用感
SQLiteを使用したWordPressの最も顕著な特徴は、驚異的な応答速度である。管理画面での操作やページの読み込みが非常に高速で、特に以下の点で体感できる:
- 投稿の保存や公開が瞬時に完了する
- 管理画面の各ページ間の移動がスムーズである
- プラグインのインストールや有効化が高速である
通常のMySQL環境では数秒かかる操作が、SQLite環境ではほぼ瞬時に完了する。この速度差は特に管理作業を頻繁に行う場合に大きなメリットとなる。
パフォーマンス比較
SQLiteとMariaDBを使用したWordPress環境のパフォーマンスを比較するため、簡単なベンチマークテストを実施した。
測定環境
- 同一ハードウェア上でテスト
- Apache Benchを使用(
ab
コマンド) - 500リクエスト、10並列でトップページにアクセス
- 初期インストール直後の状態で測定
WordPress with SQLite
メモリ使用量
SQLiteを使用した場合、単一のWordPressコンテナのみで動作する:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
7d22d5c46e2c sqlite_wordpress-wordpress-1 0.01% 151MiB / 20.24GiB 0.73% 1.91MB / 7.18MB 0B / 17.4MB 11
パフォーマンス測定結果
❯ ab -n 500 -c 10 'http://localhost/'|grep Request
Requests per second: 245.71 [#/sec] (mean)
平均レスポンスタイム: 42.365ms
WordPress with MariaDB(標準構成)
比較のため、WordPressが公式に提供しているDocker Compose設定(MySQL/MariaDB使用)でも同様のテストを実施しました。
メモリ使用量
MariaDBを使用した場合は、WordPressコンテナとデータベースコンテナの2つが必要です:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
065ec00a760f sqlite_wordpress-wordpress-1 0.01% 138MiB / 20.24GiB 0.67% 6.7MB / 3.22MB 180kB / 88.1MB 11
ef148bfb4007 sqlite_wordpress-db-1 0.02% 83.31MiB / 20.24GiB 0.40% 1.81MB / 5.15MB 6.28MB / 35.5MB 21
パフォーマンス測定結果
❯ ab -n 500 -c 10 'http://localhost/'|grep Request
Requests per second: 209.41 [#/sec] (mean)
平均レスポンスタイム: 47.869ms
比較結果
項目 | WordPress with SQLite | WordPress with MariaDB | 差分 |
---|---|---|---|
メモリ使用量 | 151 MiB | 138 MiB + 83.31 MiB = 221.31 MiB | SQLiteの方が約70 MiB少ない(約32%削減) |
リクエスト/秒 | 245.71 req/sec | 209.41 req/sec | SQLiteの方が約17%高速 |
平均レスポンスタイム | 42.365 ms | 47.869 ms | SQLiteの方が約5.5 ms速い(約11%改善) |
考察
-
メモリ使用量: SQLiteを使用することで、約32%のメモリ使用量削減が実現できます。これは特に限られたリソースの環境(VPSや共有ホスティングなど)で大きなメリットとなります。
-
パフォーマンス: SQLiteはシンプルなファイルベースのデータベースにもかかわらず、MariaDBよりも高いパフォーマンスを示しています。これは主に以下の理由によると考えられます:
- プロセス間通信のオーバーヘッドがありません
- シンプルなクエリ実行パスです
- ファイルシステムキャッシュを効率的に利用できます
SQLite版WordPressの適用シナリオ
SQLiteを使用したWordPressは、以下のようなシナリオで特に有効です:
最適な利用シーン
- 小〜中規模のWebサイト: アクセス数が多くない個人ブログや小規模企業サイト向けである
- 開発・テスト環境: 本番環境と同じWordPressを軽量に動かしたい場合に適している
- リソース制約のある環境: 低スペックのVPSやレンタルサーバーで効果的である
- バックアップが容易なサイト: SQLiteはファイル1つでバックアップ可能である
注意点
- 大規模サイトには不向き: 同時接続数が多い場合はSQLiteの制約が問題になる可能性がある
- 一部のプラグイン互換性: 特定のMySQLの機能に依存するプラグインは動作しない場合がある
- 公式サポート外: WordPressの公式サポート対象外であるため、問題発生時の対応は自己責任となる
今後の展望
個人的には、以下の点で今後SQLite版WordPressを活用していく予定である:
-
既存の小規模サイトの移行: 現在運用している小規模なWordPressサイトの一部をSQLiteベースに移行し、リソース使用量とパフォーマンスの改善を図る
-
開発環境の標準化: 開発・テスト環境ではSQLiteを標準とし、環境構築の簡素化と高速化を実現
-
バックアップ戦略の簡素化: SQLiteファイル単体でのバックアップにより、データベースダンプが不要になるメリットを活かす
SQLiteを使用したWordPressは適切なユースケースにおいて従来のMySQL構成よりも多くのメリットをもたらす可能性がある。個人ブログや小規模サイトでの利用は特に検討する価値が十分にあるだろう。
まとめ
WordPressをSQLiteで動かすことで、以下のメリットが判明しました
- シンプルな構成: DBサーバー不要で構成がシンプル
- リソース効率: メモリ使用量が約32%削減
- 高速なレスポンス: リクエスト処理が約17%高速化
- 簡単なバックアップ: データベースがファイル1つで完結
SQLiteを使用したWordPressは公式サポート対象外ではあるものの、適切なシナリオでは非常に魅力的な選択肢となる。特に小規模サイトや開発環境においては、そのシンプルさと効率性が大きな強みとなるだろう。
今後も継続的に検証を進め、実運用での知見を深めていく予定である。
Discussion