set setting reset

インフラ関連の小ネタと備忘録

第35回 PostgreSQL 勉強会に行ってきました

初めて PostgreSQL 勉強会にお邪魔させていただきました。

connpass.com

殴り書きメモですが、記録として。

トランザクション入門

oss-db silver の出題範囲とのことでした

同時実行制御

  • 完了しない状態のデータが残ってしまう
    • 一連の処理が完了した上で COMMIT する
  • 一貫性がないデータが読めてしまう
  • 不正な更新データが書き込まれてしまう
    • dirty read
    • 一連の処理に割り込まない

トランザクションの使い方

  • 一貫した処理を保証するためのDB処理の集合
    • begin ~ commit or rollback
  • ACID 特性
    • 更新データは処理が完了した状態でのみ保存できる
    • 一貫性のあるで0多の読み書きを保証する
    • 同時に1つのトランザクションだけが実行しているように見える
    • 書き込んだデータは確実に保存する
  • begin は postgres 独自コマンド
  • トランザクションとエラー
  • SAVEPOINT による部分的 ROLLBACK
    • 使ってるアプリケーションはあるんだろうか。。
begin;
intert into ...
SAVEPOINT SP1;
insert into ...
-> ERROR
ROLLBACK TO SP1;
-> ROLLBACK

トランザクションの分離

  • 分離性
  • 分離レベル
    • Serializable
      • 遅い
    • Repeatable read
      • 直列化の失敗
    • Read committed
      • 反復不能読み取り
      • ファントムリード
        • 行の集合として見た場合、再度読み込むと1回目にはなかった行が読み込まれることがある
      • 直列化異常
  • 分離レベルの使い方
    • SET TRANSACTION ISOLATION LEVEL ****
  • 分離レベルと性能はトレードオフ

ロック


postgresql 10 がやってくる

logical replication

  • pgpool-II / slony-I
  • logical decoding
    • BDR(Bi-Direction Replication)
    • logical replication(postgresql10)
  • logical decoding
    • wal -> wal の変換プラグイン -> 論理ログ -> 論理ログの適用
  • logical replication
    • postgresql.conf
      • wal_level = logical
        • デカい
      • max_wal_senders
      • max_replicaiton_slots
    • pg_hba.conf
      • いつもの
    • create database
      • logical replication は DB 単位で設定
    • create table
    • logical replication の設定
      • 複製元
        • create publication
        • insert update delete が複製
        • 複製させない指定も可能
      • 複製元
        • create subscription
          • CONNECTION に接続文字列を書く
    • レプリケーション非対象
      • trancate
      • DDL
      • vacuum
    • meta-data
      • pg_stat_subscriptino
    • conflict
      • conflict が発生したら伝搬があぼーん
      • ぐえーむずい
    • 異なる構造間のレプリケーションが可能
      • ただし複製元にある列は複製先にもなければならない
      • 文字コード間の複製が可能
    • 応用編
  • declarative partitioning
  • others
    • GUC に多数いろいろ
    • パラレルクエリの改善
    • pg_hba_rules いいじゃん
    • hash index の wal 対応
      • uuid にはいいかも
      • イコール比較しかできない
    • JSON/JSONB + textsearch

togetter

ぬこ@横浜さんが当日の #jpug_study をまとめておられます。

togetter.com