はじめに
2017年10月5日にPostgreSQL 10がリリースされました。
完成度が高いと評判だったので、リリースノートを読んでみました。
PostgreSQL 10の主な変更点
ロジカルレプリケーションの導入
ロジカルレプリケーションは分散データベースシステムにおけるデータの複製のためのpublish/subscribeフレームワークです。
テーブル単位での複製や、異なるバージョン間で複製ができます。
publish/subscribeと呼ばれているので、IoTのその仕組みに近いようです。
複製元のWALを加工して複製先に送信することで複製をします。
パーティション構文の導入
今までPostgreSQLでパーティションを作成するためにはトリガ関数を書いたりしなければなりませんでしたが、10からはパーティション構文が用意されました。
これにより、パーティションを簡単に作れるようになり、メンテナンスも簡単になりました。
しかも、トリガを利用してパーティションを作成するよりも高速にデータを挿入することができます。
パラレルクエリの改善
並列実行できる処理を増やすことによって、並列実行の性能が向上しました。
- B-treeインデックススキャン
- ビットマップヒープスキャン
- マージ結合
- 相関の無いサブクエリの処理
- データの事前ソート(性能改善)
- PLファンクション(性能改善)
同期レプリケーションにおけるクォーラムコミットの実装
クォーラムコミットは、プライマリデータベースとリモートレプリカのデータに一貫性を持たせる仕組みの1つです。
そもそも、プライマリデータベースとリモートレプリカの間にデータに高い一貫性を持たせると、可用性が低下するというトレードオフがあります。
例えば、全レプリカからデータの複製が成功したという通知を受け取るまで、プライマリは待ち続けるプロトコルがあるとします。
一貫性は必ず保たれるが、レプリカが故障していた場合などはプライマリは永遠に動作しなくなってしまいます。
クォーラムコミットは、ある一定数のレプリカからデータの複製が成功したという通知をプライマリが受け取れば、データの複製が完了したことにします。
すなわち、一貫性を低下させることで、可用性を向上させています。
https://qiita.com/everpeace/items/632831371da5ff215995
まとめ
今度は実際にPostgreSQL 10を触ってパーティション作ったり、レプリカ作って動作確認してみます。