WebシステムのバックエンドとしてのPostgreSQL
結論から述べると、PostgreSQLは、Webシステムのバックエンドシステムに適しています。PostgreSQLはMySQLと同様に、 Webシステムのデータベースサーバーとしてよく利用されています。実際、現在稼働しているPostgreSQLサーバーの多くがWebシステムのバック エンドとして動いていると思われます。
PostgreSQLとMySQLのシェアの違い
ホスティングサービスアプリケーションのサポート状況や各種の統計情報からする と、全世界的には、Webシステムのデータベースサーバーのシェアは、MySQLの方がかなり多いと考えられます。これにはいろいろな要因が考えられます が、最近まではPostgreSQLよりMySQLの方がWebシステムのバックエンド、特にレンタルサーバー用途に適していたため、ほとんどのレンタル サーバーサービスにMySQLが採用されていたのが大きいと考えられます。
PostgreSQLがMySQLよりシェアが少ないことに対するシステム上の要因は、次の3つが考えられます。
- PostgreSQLはデータベースの最大同時接続数がMySQLより少なかった
- PostgreSQLはデータベース単位でのデータベースサーバーを複数ユーザーで共有する環境を構築しづらかった
- MySQLは単純なクエリの実行速度が速い
現在PostgreSQLは、商用のデータベースシステムと比較しても、Web システムのバックエンドシステムとして必要かつ十分な機能と性能を持っています。速度面では、もともとトランザクションをサポートせず単純クエリの高速化 に特化していたMySQLが高速であることは今でも変わりありませんが、MySQLと比べて見劣りしていた(1)と(2)は現在のPostgreSQLで は解消されています。
それでは、現在のPostgreSQLの機能を見ていきましょう。
同時接続数
古いバージョンのPostgreSQLでは100を超えるデータベース接続を作 成することは難しかったのですが、今は簡単に100以上の接続をサポートできます。PostgreSQLのデフォルト接続数はMySQLと同じ100接続 に設定され、数百のクライアントからデータベースを同時に利用することもできます。現在のPostgreSQLの最大スループットは、100〜200接続 がほとんどのようです。
SCHEMAのサポート
現在のPostgreSQLはSCHEMAをサポートし、ユーザーのアクセス権 限をスキーマ単位で設定できるようになりました。これにより、レンタルサーバー事業者は、MySQLサーバーと同じ程度の設定で、顧客単位のデータベース オブジェクトへのアクセス権限を付与することが可能になりました。
![]()
MySQLは他のクエリの影響を受ける?
MySQLは単純なクエリの処理はかなり高速です。しかしクエリの組み合わせによっては極端にパ フォーマンスが低下する場合があります。筆者は、Webサイト上に公開されていたPHPのセッションセーブハンドラを実行した際にこれに気が付きました。 PostgreSQLは97セッション/秒で処理を行えたのですが、MySQL(InnoDB)では17セッション/秒しか処理できませんでした。このこ とにより、PostgreSQLのクエリ実行速度は極端に速いわけではありませんが、他のクエリに影響されて性能が極端に悪くなることはないと考えられま す。