と、いうわけでメモ。
PostgreSQL9.0?
8.5 = 9.0 あと2~3ヶ月でリリーススケジュールが見えてくる・・・と思うとのこと。
新機能予定
- 組み込みReplication
- Join removeal
- EXCLUDE制約
- EXPLAIN BUFFERS
PostgreSQLのReplication
2つの技術の合せ技
- Streaming Replication
- WAL転送=ログ転送 ※MySQLはクエリ転送
- OracleのDataGuardに似ているらしい
- PITRを利用したWarm Standbyよりも信頼性が高い
- Hot Standby
- Standby側で検索クエリを実行できるようにする技術 ※Warm Standbyは8.2くらいから正式に使えたはず。 PostgreSQLのReplicationのいいところ:
- (warm standyと比較して)信頼性が高い
- (warm standyと比較して)待機系のリソースを活用できる
- (warm standyと比較して)Replicationのオーバーヘッドが少ない
- (クエリ転送方式と比較して?)SQLの制約が少ない
- ラージオブジェクトが使える
- DB、テーブル作成もレプリケーションできる ※これはクエリ転送方式でもできるはず 制約:
- DB単位・テーブル単位のレプリケーションはできない
- Master/SlaveでPostgreSQL・OSバージョン・ハードウェアアーキテクチャが同じでないとならない
- 負荷分散・Failover・クエリ切り分け機能はない
pgpool-II
いいところ=多機能:
- 同期レプリケーション(shared nothing)
- 他のレプリケーションソフトとの連携(master-slaveモード)
- pgpool-II ユーザマニュアルが参考になりそう。
- 負荷分散
- Failover
- パラレルクエリ
- オンラインリカバリ(オンラインとはいえ無停止ではない。一瞬止める)
- 管理画面あり
デモ
Vine on Let's noteでpgbenchしてみたり。
Q&A
Q: なぜSlonyから本体組み込みに(石井さんが)しようと思ったのか? A: PostgreSQLはポリシーとしてレプリケーション機能を外だししていた。 Q: MySQLのような大規模対応のためのスケーラビリティ対応ってできる?memcachedとの併用などは? A: memcachedと併用できるらしい。 Q: pgpool-IIで通らないクエリは? A: 副作用を伴う関数(ただし一部(nextvalなど)は対応している)。hintのようなものを利用して指示することもできる。current_timestampやlarge objectについてはうまく扱えるように(最新バージョンで)なった。
ヒトコト
Replicationの部分では、ようやくMySQLに追いつき始めた感じ。 今日の石井さんのお話は、あまり深い内容ではなくて、軽い紹介+デモのみ。 しかし、同期レプリケーションっていつのまにか9.0には含まれなくなったのか・・・知らなかった~。
See also
- #isucon 初回から参加しているベテラン選手が40代前半のいま本選当日に向けて準備したこと
- #isucon チーム「ウー馬場ーイーツ・ザ・ファイナル」でISUCON14本選に参加し21位になりました
- #isucon チーム「ウー馬場ーイー222」でISUCON13本選に参加し30位になりました
- 「SRE≠インフラなんだけどもう誤解されちゃってるから、DevOps新実装としてSite Production Engineeringはいかがでしょう?」でJAWS DAYS 2022に登壇しました #jawsdays #jawsug
- #isucon チーム「シン・ウー馬場ーイー2」でISUCON12本選に進出し12位になりました