MySQLとPostgreSQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)としてトップ2に位置し、長年にわたって高い信頼性と拡張性が実証されています。本記事では、PostgreSQLとMySQL、そして両者の違いについて解説します。
詳しく読む:SQL Serverの監視・パフォーマンスツール ベスト2022
PostgreSQLとは?
PostgreSQLは、PostgreSQL Global Development Groupによって開発された高度なオープンソースRDBMSです。1996年7月8日に初めてリリースされ、1986年にカリフォルニア大学バークレー校で始まったPOSTGRESプロジェクトの一環として開発されました。
PostgreSQLは、リレーショナルクエリと非リレーショナルクエリの両方に対応するエンタープライズクラスのリレーショナルデータベースです。プロシージャ言語(例:)をサポートしています。
- PL/pgSQL
- PL/Python
- PL/Tcl
- PL/Perl
また、Java、.NET、Go、Ruby、C、C++、ODBCなど、標準規格外のプロシージャ言語にも対応しています。
PostgreSQLは、以下のオペレーティングシステムで利用できます。
- macOS
- Windows
- Linux
- FreeBSD
- OpenBSD
- NetBSD
- AIX
- HP-UX
- Solaris
- UnixWare、およびその他のほとんどのUnix系システム
さらに、PostgreSQLはAppleのmacOS Serverのデフォルトデータベースです。
PostgreSQLでSQL言語を使用することで、拡張性と標準規格への準拠を実現しています。PostgreSQLは、組み込みデータ型向けに多数の演算子と関数を提供します。最適なパフォーマンスを実現するため、PostgreSQLのサーバー管理では、ソフトウェアのインストール、サーバーのセットアップと設定、ユーザーとデータベースの管理、保守作業など、多くの必要な最適化タスクを実行できます。
PostgreSQLは、最も安定したデータベース管理システムの1つであり、Webサイト、地理空間、分析アプリケーション向けのプライマリデータストアまたはデータウェアハウスとして広く利用されています。
詳しく読む:PostgreSQLとは?オープンソースのデータベースシステム
MySQLとは?
MySQLは、Oracle Corporationが開発したオープンソースRDBMSです。スウェーデン企業のMySQL ABによって開発が始まり、1995年5月23日に初めてリリースされました。
MySQLは、Linux、Windows、macOS、FreeBSD、AIX、HP-UX、ArcaOS、BSDi、eComStation、OpenBSD、IBM i、IRIX、Oracle Solaris、NetBSD、Novell NetWare、OpenSolaris、OS/2 Warp、Sanos QNX、Symbian、Tru64、SunOS、SCO OpenServer、SCO UnixWareなど、多くのシステムプラットフォームで動作します。
MySQLは最も安定したデータベース管理システムの1つであり、一部のクラウドプラットフォームでは「サービスとして」提供されています。クラウドベースのMySQLサービスには、次のものがあります。
- Oracle MySQL Cloud Service
- Amazon Relational Database Service
- Azure Database for MySQL
- HP Converged Cloud
- Rackspace
- Jelastic
- Heroku
MySQLには、2つの異なるエディションも用意されています。MySQL Community EditionとMySQL Enterprise Editionです。
PostgreSQLとMySQL:どのような違いがあるか
PostgreSQLとMySQLは、どちらも無料で利用できるオープンソースのRDBMSです。しかし、両者にはいくつかの違いがあります。
| PostgreSQL | MySQL | |
|---|---|---|
| 最適な用途 | 同時書き込み処理 | 読み取り中心の処理 |
| DBMSの種類 | オブジェクト指向リレーショナル | リレーショナルベース |
| レプリケーション | 同期 | 一方向同期 |
| セキュリティ | ネイティブSSLサポート | TLSサポート |
| オブジェクト統計 | 非常に優れている | かなり優れている |
| ACID準拠 | 完全 | 限定的 |
| SQL準拠 | 大部分 | 部分的 |
| 結合機能 | 良好 | 限定的 |
| MVCCサポート | 完全 | 限定的 |
| 部分、ビットマップ、 式インデックス | サポート | 非サポート |
| CASCADEオプション | サポート | 非サポート |
| 使用言語 | C | C、C++ |
| ライセンス | PostgreSQL License | GPLv2またはプロプライエタリ |
パフォーマンス
PostgreSQLとMySQLは、どちらも知名度が高く広く利用されているデータベース管理システムであり、実際の利用環境では同等のパフォーマンスを発揮します。
PostgreSQLのパフォーマンス
PostgreSQLは、地理空間データのサポートや、読み取りロックなしでの同時実行など、商用ソリューションで利用できるさまざまなパフォーマンス最適化に対応しています。PostgreSQLは大規模システムで広く使われており、複雑なクエリを実行する必要があるシステムで特に有利です。
PostgreSQLはビジネスインテリジェンス(BI)アプリケーションで優れた性能を発揮し、高速な読み書きが必要なデータ分析やデータウェアハウスのアプリケーションに適しています。そのため、OLTP/OLAPシステムでも適切に機能します。
詳しく読む:SQLパフォーマンスチューニングのベストプラクティス
MySQLのパフォーマンス
MySQLは一般的で、Webベースのデータベースとして広く選ばれており、単純なデータトランザクションに利用されています。全体的なパフォーマンスは良好ですが、MySQLは高負荷や複雑なクエリでは性能が劣ります。
MySQLは一部のBIアプリケーション、特に読み取り中心のアプリケーションで優れた性能を発揮し、信頼性も高くなっています。また、高速な読み取り速度が必要な場合は、OLAP/OLTPシステムでも適切に機能します。MySQLとInnoDBを組み合わせることで、OLTPのシナリオにおいて非常に優れた読み書き速度を実現でき、高い同時実行性が求められる環境でも適切に機能します。
データ型
MySQLとPostgreSQLでは、サポートするデータ型が大きく異なり、この点ではPostgreSQLが優位に立つ傾向があります。
PostgreSQLのデータ型
PostgreSQLは、1つの製品で構造化データ型と非構造化データ型を保存できます。数値、金額、文字、バイナリ、日付/時刻、ブール、列挙、幾何、ネットワークアドレス、BitString、全文検索、UUID、XML、JSON、配列、複合、範囲、ドメイン、オブジェクト識別子、pg_lsn、疑似型など、ほとんどのデータ型をサポートしています。
MySQLのデータ型
MySQLはSQL標準のすべてのデータ型をサポートしており、数値、日付と時刻、文字列とバイト列、空間など、複数のカテゴリに分類されます。MySQLは、Open Geospatial Consortium(OGC)の仕様に従い、ジオメトリ型環境を備えたSQLのサブセットとして空間拡張を実装しています。
まとめ
MySQLは読み取り中心のワークロード向けの非常に高速なデータベースとして知られており、読み取り中心の処理を得意としています。しかし、書き込み処理と組み合わせると、MySQLでは同時実行性が課題になる可能性があります。
一方、PostgreSQLは「世界で最も高度なオープンソースのリレーショナルデータベース」として自らを位置付けています。PostgreSQLは、標準規格への準拠、豊富な機能、拡張性を備えるよう構築されており、同時書き込み処理を得意としています。
組織は、読み取り中心の処理にはMySQLを、同時書き込み処理にはPostgreSQLを選択できます。ただし、全体的なパフォーマンスを考慮すると、PostgreSQLを第一候補にすべきです。
詳しく読む:SQLクエリ最適化のベストプラクティス