PostgreSQL is なに?
概要
オープンソースの関係データベース管理システム (RDBMS)である。
同じオープンソースのRDBMSであるMySQLと比較してなにがいいのかを調べてみる。
それぞれの特徴を一言でまとめると
- RDBMSに求められるものが過不足なく搭載されているのはPostgreSQL。
- 大規模なシステムでスケールさせる上で性能を限界まで引き出せるのはMySQL
DML(データ操作言語)を比較
select文
- 大量データのソートが必要なSELECT文だとMySQLは遅くなる
- PostgreSQLと比較するとMySQLはソートのアルゴリズムがそれほど優れていない
- ただ、新規10件、100件のデータ(TOP n レコード)を取得するようなものは早い
update文
- PostgreSQLはUPDATEする際には変更前の行に削除フラグのようなものを立てたうえで、変更後のデータを持った新しい行を追加している
- いっぽうでMySQLは、UPDATE対象となる行の値を直接上書きしているのでUPDATEはMySQLの方が早い
テーブル結合(JOIN)
- MySQLはネステッドループ結合しかサポートしていない。複雑なアルゴリズムはサポートしない思想のため
- PostgreSQLはネステッドループ結合, ハッシュ結合, ソートマージ結合全てをサポートしている
トランザクション処理の分離レベル
- MySQLはデフォルトがREPEATABLE-READとなっている
- PostgreSQLはREAD-COMMITTEDがデフォルト
- ファントムリードやノンリピータブルが起こる可能性はある
- REPEATABLE-READに変更したとしてもネストキーロックとは違う方法でファントムリードを防いでいるのでロック競合が起こりづらい
レプリケーションの論理型と物理型
- MySQLの場合、レプリケーションは論理型または物理型のいずれかを選べるようになっている(デフォルトは物理型)
- PostgreSQLは物理型のみ
PostgreSQLにしかないもの
- パラレルクエリがある。処理速度をより速くするために、複数のCPUを活用してクエリを実行するもの
- サードパーティのOSSツールであるPostGISがある点でPostgreSQLが選ばれたりする。MySQLのものより機能が豊富
所感
PostgreSQLについて名前しかわからないぐらいなので調べ他のですが、 そもそもDBというものの仕組みを詳しく知らなかったので、知識不足を実感。 もっと知っていればいい具合に比較できたかと思う。 記事のまとめのようになってしまったが、DBの知識は多くつけられたと思う。
参考記事: PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較! - エンジニアHub|若手Webエンジニアのキャリアを考える!