最終更新:

【図解で比較】MySQL vs PostgreSQL — 2大RDBMSの違いを徹底解説


MySQL vs PostgreSQL 特徴くらべ MySQL 比較項目 PostgreSQL 1995年 / スウェーデン 誕生 1986年 / UC Berkeley GPL(Oracle所有) ライセンス PostgreSQLライセンス 単純な読取り高速 得意分野 複雑クエリ・書込み ○ 基本対応 JSON ◎ JSONB充実 ソース・レプリカ 複製方式 ストリーミング+論理 RDS / Aurora AWS代表 RDS / Aurora互換 Undo Log方式 MVCC ヒープ+VACUUM
MySQL vs PostgreSQLの特徴比較
ひよこ ひよこ

MySQLPostgreSQLってどっちもデータベースだよね?何が違うの?

ペンギン先生 ペンギン先生

どっちもリレーショナルデータベース(RDBMS)なんだけど、生まれた背景が全然違うんだ。MySQLは1995年にスウェーデンで生まれて、Webサービスの爆発的な成長とともに広まったんだよ。WordPressやFacebookが使っていたことで一気に有名になったんだ。一方のPostgreSQLは1986年にカリフォルニア大学バークレー校の研究プロジェクトから生まれた、学術寄りのデータベースだよ。

ひよこ ひよこ

へー、大学生まれなんだね!でも両方とも無料で使えるの?

ペンギン先生 ペンギン先生

どちらもオープンソースで無料だけど、ライセンスが違うんだ。MySQLGPLライセンスで、商用利用する場合はOracleから商用ライセンスを買う必要があるケースがあるよ。PostgreSQLはBSDライクなライセンスで、商用利用でもほぼ制限がないんだ。だからクラウドベンダーがPostgreSQLベースの独自サービスを作りやすいという事情もあるんだよ。

ひよこ ひよこ

性能はどっちが速いの?

ペンギン先生 ペンギン先生

一概には言えないんだけど、傾向はあるよ。MySQLは単純なSELECTクエリ、つまり「読み取り」が多いWebアプリに強いと言われているんだ。シンプルなクエリを大量にさばくのが得意だね。PostgreSQLは複雑なクエリや大量のデータ書き込みに強くて、分析系の処理やトランザクションが多いシステムに向いているよ。

ひよこ ひよこ

JSONとか最近のデータ形式には対応してるの?

ペンギン先生 ペンギン先生

ここはPostgreSQLが大きくリードしているポイントだね。PostgreSQLにはJSONB型という専用のバイナリJSON型があって、インデックスも貼れるし、JSONの中身を直接検索できるんだ。MySQLJSON型をサポートしているけど、機能面ではPostgreSQLのほうが充実しているよ。NoSQLのようなドキュメント指向の使い方もPostgreSQLならかなりできるんだ。

ひよこ ひよこ

全文検索はどうなの?ブログの検索機能とかで使いたいんだけど。

ペンギン先生 ペンギン先生

MySQLにはFULLTEXTインデックスがあって、手軽に全文検索を導入できるよ。PostgreSQLにもtsvector/tsqueryという全文検索の仕組みがあるんだけど、こっちはより柔軟で高度な検索ができるんだ。日本語の全文検索に関しては、どちらもそのままだと弱いから、MySQLならMroonga、PostgreSQLならPGroongaといった拡張を使うのが定番だよ。

ひよこ ひよこ

クラウドで使うときはどんなサービスがあるの?

ペンギン先生 ペンギン先生

AWSだとMySQLにはAmazon RDS for MySQLAmazon Auroraがあるよ。AuroraはMySQL互換で性能が最大5倍とも言われていて、人気が高いんだ。PostgreSQLにもRDS for PostgreSQLとAurora PostgreSQL互換版があるよ。Google CloudだとCloud SQLに加えて、PostgreSQL互換のAlloyDBという高性能サービスもあるんだ。クラウド各社がPostgreSQL互換サービスに力を入れている印象だね。

ひよこ ひよこ

レプリケーションってデータのコピーを作る機能だよね?違いはあるの?

ペンギン先生 ペンギン先生

MySQLは昔からマスター・スレーブ(今はソース・レプリカと呼ぶ)のレプリケーションが得意で、設定も比較的簡単だよ。PostgreSQLはストリーミングレプリケーションに加えて、論理レプリケーションという仕組みも持っているんだ。論理レプリケーションテーブル単位で選択的にデータを複製できるから、異なるバージョン間の移行やデータ連携に便利なんだよ。

ひよこ ひよこ

コミュニティの雰囲気って違うの?

ペンギン先生 ペンギン先生

MySQLOracleが所有しているから、開発の方向性にOracleの意向が影響するんだ。それが心配で、MySQLの元開発者が作ったMariaDBというフォークも存在するよ。PostgreSQLは特定の企業に属さないコミュニティ主導の開発で、透明性が高いんだ。機能追加のペースはPostgreSQLのほうが積極的で、毎年メジャーリリースで新機能がどんどん追加されるよ。

ひよこ ひよこ

結局、どっちを選べばいいの?

ペンギン先生 ペンギン先生

シンプルなWebアプリやCMSならMySQLが手軽でエコシステムも豊富だよ。WordPressLaravelなどのフレームワークMySQL前提のものが多いからね。複雑なクエリ、地理情報(GIS)、JSONデータの活用、厳密なデータ整合性が必要ならPostgreSQLがおすすめだよ。最近の新規プロジェクトではPostgreSQLを選ぶケースが増えている印象だね。

ひよこ ひよこ

ちょっと深い話も聞きたいな。同時にデータを読み書きする仕組みって違うの?

ペンギン先生 ペンギン先生

いいところに目をつけたね。どちらもMVCCを使っているんだけど、実装が全然違うんだ。MySQLのInnoDBはUndo Logに古いバージョンを保存して、最新データを直接上書きするよ。PostgreSQLヒープに古い行も新しい行も両方残す方式で、VACUUMという掃除処理が必要になるんだ。このVACUUMの管理がPostgreSQLの運用で一番気をつけるポイントだよ。

ひよこ ひよこ

なるほど、内部の仕組みがけっこう違うんだね!

ペンギン先生 ペンギン先生

そうなんだ。だから「どっちが優れている」じゃなくて「何に使うか」で選ぶのが正解だよ。MySQLは手軽さと実績、PostgreSQLは拡張性と標準SQL準拠が魅力だね。最近はSupabaseNeonのようなPostgreSQLベースのサーバーレスDBも登場しているし、両方の特徴を知っておくと技術選定で困らないよ。