読者です 読者をやめる 読者になる 読者になる

MySQLとPostgreSQLの比較

まあ自分でもびっくりするほどDBまわりの知識がかけていて残念でしょうがないので、知識をつけていこうと思っている今日この頃。
今日、上司と外注先の人が「やっぱり大規模サイトはPostgreSQLよりMySQLだよねー」
みたいなことを言っていて、何となく違和感を覚えたので調べてみた。


何か、どっかでPostgreSQLを使った大規模サイト運用の話があった記憶が…、と思って、本棚をあさって見ると、出てきた。

WEB+DB PRESS Vol.48
WEB+DB PRESS Vol.48WEB+DB PRESS編集部 編

技術評論社 2008-12-22
売り上げランキング : 208434


Amazonで詳しく見る
by G-Tools

うん、やっぱり、PostgreSQLでもそんなに前面に事例が出てないだけで、けっこう使われてるんじゃん。
興味をもったので、MySQLPostgreSQLの違いについてもう少し色々と調べてみた。

一般的には,多機能(PostgreSQL)か高速(MySQL)かで比べられることが多いです。

少し前までは,エンタープライズ系ではPostgreSQL,スモールビジネスやパーソナルユースではMySQLという捕らえ方が支配的でしたが,現在では両者とも機能面での成熟が図られ,その差異はあまり無いように思います。

多くのオープンソースCMSやBLOGシステムでは,MySQLへの対応事例が多いですが,PostgreSQLへの対応事例は比較的少ないです。

むしろ,それらのシステムにはSQLiteなどの軽量RDBMSへの対応が多く見られます。

一方で,PostgreSQLは,OracleにおけるPL/SQLに似た言語体系を持つストアドプロシージャとしてPL/pgSQLが使えますので,PL/SQLが得意な人はPostgreSQLがとっつきやすいかもしれません。
SQLで質問です。 MySQLとPostgreSQLの違いはなんでしょうか? 同.. - 人力検索はてな

ふむ、当初は速度のMySQLと機能のPostgreSQLという住み分けだったけど、最近ではそういった性能面での差はなくなっているって感じか。
折角なので、もう少し情報を集めてみる。

PostgreSQLは、BSDライセンスにて提供されています。BSDライセンスは、非常に制限が緩いのが特徴です。よって、PostgreSQLを使用する際にライセンス料が発生しないのはもちろんのこと、改造を施した場合などでも特別な制約はありません。
<中略>
MySQLは、デュアルライセンス方式を採用しており、GPLライセンスとライセンス料を必要とする商用ライセンスがあります。GPLライセンスの範囲内での利用であれば、ライセンス料を必要としません。
[ThinkIT] 第1回:PostgreSQLとMySQLの紹介 (1/4)

ライセンスの違い。これも大きいね。
商用に使うという点ではPostgreSQLの方が有利なのかな。
てか、商用利用ってどういうもんなのか実はよく分かってないという事実に気づいた。
まあこれは後で調べるとして、

全体のアーキテクチャとしては、2つともほぼ同様です。しかし、サーバ側に位置するデータベースエンジン部分の構造はまったく異なります。PostgreSQLはマルチプロセス構成、MySQLはマルチスレッド構成にて動作します。

PostgreSQLは、postmasterと呼ぶプロセスでクライアントからの接続要求を待ち受けます。クライアントから接続要求を受け付けると、postgresプロセスとよばれる子プロセスを生成し、クライアントとの接続を確立します。

一方のMySQLは、mysqldと呼ぶプロセスの中にいくつかのスレッドを起動します。その中の1つのスレッドにてクライアントからの接続要求を待ち受けます。クライアントからの接続要求を受け付けると、クライアント接続スレッドが起動し、クライアントとの接続を確立します。

このように、PostgreSQLでは「1クライアント ⇔ 1プロセス」によるマルチプロセス構成にて実現している部分を、MySQLでは「1クライアント ⇔ 1スレッド」によるマルチスレッド構成にて実現しています。この実現方法の違いは、PostgreSQLMySQLアーキテクチャ上の一番特徴的な違いです。
[ThinkIT] 第1回:PostgreSQLとMySQLの紹介 (3/4)

おお、これはけっこう大きな違いっぽい。
まあこれを調べて、スレッドとプロセスの明確な違いが言えないところが悲しいけど。
んー、調べる前より少しは違いが見えてきた(気がする)