Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20231209_osc_fukuoka_debility.pdf

debility
January 17, 2024
3

 20231209_osc_fukuoka_debility.pdf

debility

January 17, 2024
Tweet

Transcript

  1. 自己紹介 3 平田 哲(HIRATA, Satoshi) id: debility Japan PostgreSQL Users

    Group Fukuoka.pm Program, Server, Network, and “Nomikai” Main Weapon: Custom Dual Squelcher icon: © mutsuking
  2. SQL/JSON対応 13 関数名 説明 JSON_OBJECT テキスト配列から JSON オブジェクトを構築します。 JSON_OBJECTAGG 提供されたデータを

    JSON オブジェクトに集約します。 JSON_ARRAY 提供された SQL または JSON データから JSON 配列を 構築します。 JSON_ARRAYAGG 提供された SQL または JSON データを JSON 配列に集 約します。
  3. SQL/JSON対応 14 関数名 説明 IS JSON [VALUE] 文字列が JSON として解釈できるなら真を返す。

    IS JSON ARRAY 文字列が JSON 配列として解釈できるなら真を返す。 IS JSON OBJECT 文字列が JSON オブジェクト(いくつかのキーと値)とし て解釈できる なら真を返す。 IS JSON SCALAR 文字列が JSON のスカラ値として解釈できるなら真を返 す。
  4. ANY_VALUE集約関数 16 postgres=# SELECT * FROM category; category_large | category_middle

    | category_small | large_furigana | middle_furigana | small_furigana ----------------+-----------------+----------------+----------------+-----------------+---------------- 芝⽝ | ⾚⾊ | ⾚柴 | しばいぬ | あかいろ | あかしば 芝⽝ | ⿊褐⾊ | ⿊柴 | しばいぬ | こっかっしょく | くろしば 芝⽝ | ⽩⾊ | ⽩柴 | しばいぬ | しろいろ | しろしば 芝⽝ | 胡⿇⾊ | 胡⿇柴 | しばいぬ | ごまいろ | ごましば 芝⽝ | 胡⿇⾊ | ⿊胡⿇ | しばいぬ | ごまいろ | くろごま 芝⽝ | 胡⿇⾊ | ⿊胡⿇ | しばいぬ | ごまいろ | あかごま 猫 | 単⾊ | ⽩猫 | ねこ | たんしょく | しろねこ 猫 | 単⾊ | ⿊猫 | ねこ | たんしょく | くろねこ 猫 | 単⾊ | 灰猫 | ねこ | たんしょく | はいねこ 猫 | 多⾊ | ⽩⿊猫 | ねこ | たしょく | しろくろねこ 猫 | 多⾊ | 三⽑猫 | ねこ | たしょく | みけねこ 猫 | 多⾊ | サビ猫 | ねこ | たしょく | さびねこ 猫 | 多⾊ | キジ⽩ | ねこ | たしょく | きじしろ 猫 | 多⾊ | サバ⽩ | ねこ | たしょく | さばしろ 猫 | 多⾊ | 茶⽩ | ねこ | たしょく | ちゃしろ 猫 | シマ | キジトラ | ねこ | しま | きじとら 猫 | シマ | サバトラ | ねこ | しま | さばとら 猫 | シマ | 茶トラ | ねこ | しま | ちゃとら 猫 | その他 | ポインテッド | ねこ | そのた | ぽいんてっど 猫 | その他 | ハチワレ | ねこ | そのた | はちわれ 猫 | その他 | 靴下 | ねこ | そのた | くつした (21 rows) ref: https://www.docswell.com/s/hmatsu47/51JXQ8-2023-07-02-223937
  5. ANY_VALUE集約関数 17 postgres=# SELECT category_large, category_middle, COUNT(category_small) FROM category GROUP

    BY category_large, category_middle ORDER BY category_large, category_middle; category_large | category_middle | count ----------------+-----------------+------- 猫 | シマ | 3 猫 | その他 | 3 猫 | 単⾊ | 3 猫 | 多⾊ | 6 芝⽝ | ⽩⾊ | 1 芝⽝ | 胡⿇⾊ | 3 芝⽝ | ⾚⾊ | 1 芝⽝ | ⿊褐⾊ | 1 (8 rows) ref: https://www.docswell.com/s/hmatsu47/51JXQ8-2023-07-02-223937
  6. ANY_VALUE集約関数 18 postgres=# SELECT category_large, large_furigana, category_middle, middle_furigana, COUNT(category_small) FROM

    category GROUP BY category_large, category_middle ORDER BY category_large, category_middle; ERROR: column "category.large_furigana" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT category_large, large_furigana, category_middle, midd... ref: https://www.docswell.com/s/hmatsu47/51JXQ8-2023-07-02-223937
  7. ANY_VALUE集約関数 19 postgres=# SELECT category_large, large_furigana, category_middle, middle_furigana, COUNT(category_small) FROM

    category GROUP BY category_large, large_furigana, category_middle, middle_furigana ORDER BY category_large, category_middle; category_large | large_furigana | category_middle | middle_furigana | count ----------------+----------------+-----------------+-----------------+------- 猫 | ねこ | シマ | しま | 3 猫 | ねこ | その他 | そのた | 3 猫 | ねこ | 単⾊ | たんしょく | 3 猫 | ねこ | 多⾊ | たしょく | 6 芝⽝ | しばいぬ | ⽩⾊ | しろいろ | 1 芝⽝ | しばいぬ | 胡⿇⾊ | ごまいろ | 3 芝⽝ | しばいぬ | ⾚⾊ | あかいろ | 1 芝⽝ | しばいぬ | ⿊褐⾊ | こっかっしょく | 1 (8 rows) ref: https://www.docswell.com/s/hmatsu47/51JXQ8-2023-07-02-223937
  8. ANY_VALUE集約関数 20 postgres=# SELECT category_large, ANY_VALUE(large_furigana) AS large_furigana, category_middle, ANY_VALUE(middle_furigana)

    AS middle_furigana, COUNT(category_small) FROM category GROUP BY category_large, category_middle ORDER BY category_large, category_middle; category_large | large_furigana | category_middle | middle_furigana | count ----------------+----------------+-----------------+-----------------+------- 猫 | ねこ | シマ | しま | 3 猫 | ねこ | その他 | そのた | 3 猫 | ねこ | 単⾊ | たんしょく | 3 猫 | ねこ | 多⾊ | たしょく | 6 芝⽝ | しばいぬ | ⽩⾊ | しろいろ | 1 芝⽝ | しばいぬ | 胡⿇⾊ | ごまいろ | 3 芝⽝ | しばいぬ | ⾚⾊ | あかいろ | 1 芝⽝ | しばいぬ | ⿊褐⾊ | こっかっしょく | 1 (8 rows) ref: https://www.docswell.com/s/hmatsu47/51JXQ8-2023-07-02-223937
  9. 数値リテラル表現 22 postgres=# SELECT 0x42F, 0o273, -0b100101; ?column? | ?column?

    | ?column? ----------+----------+---------- 1071 | 187 | -37 (1 row)
  10. ICU照合順序の拡張 25 PostgreSQL 16 は ICU ライブラリによる照 合順序を有効にするビルドが、ビルド時のデ フォルトになりました。 これまで

    ICU を使うには configure で -- with-icu を指定する必要がありましたが、こ れからは除外するときに --without-icu の 指定が必要になります。 また、ICU を使った照合順序について、いくつ かの機能拡張が適用されています。
  11. トランザクションの並列適用 30 サブスクリプションの streaming オプションに parallel が追 加されました。 トランザクション完了後に送信する off

    (デフォルト) 完了を待たずに順次送信する on 完了を待たずに送信したうえで並列に適用も行う parallel 並列数は max_parallel_apply_workers_per_subscription で指定(デフォルトは2)
  12. 初期コピーでバイナリ形式 34 これまでバイナリ形式 は初期コピー後のデータ同期時にし か使えませんでしたが、本バージョンでは初期コピー時にも 使えるよう になりました。 timestamp 型や bytea

    型など、一部のデータ型ではバイナ リ形式のほうが効率的に処理でき、 所要時間が短くて済 みます。 バイナリ形式はサブスクリプションの binary オプションで指 定し、デフォルトは off でテキスト形式になります。
  13. 双方向ロジカルレプリケーション 37 PostgreSQL 16 からサブスクリプションに origin オプショ ンが追加されました。 デフォルト値は any

    で、これは PostgreSQL 15 以前と同 じ振る舞いになります。 origin = none と指定すると、オリジンを持たない変更、す なわち、相手先サーバ内で生じた更新命令による変更差 分のみを受け取る動作になります。 これにより、双方向レプリケーションが実現できます。
  14. psqlでのbind対応 41 postgres=# ¥bind 'foo' 'barʼ postgres=# SELECT $1, $2;

    ?column? | ?column? ----------+---------- foo | bar (1 row)
  15. 新たなモニタリング項目 43 ビュー/関数名 説明 ビュー pg_stat_io I/O に関する統計情報を出力。 ビュー pg_stat_*_tables/indexes

    の 列 last_seq_scan、 last_idx_scan 最後にシーケンシャルスキャン、インデックスス キャンが実行された時刻を出力。 ビュー pg_stat_*_tables の 列 n_tup_newpage_upd 新しいページへの行バージョン作成を伴って更 新された行数を出力。 関数 pg_stat_get_backend_subxa ct(backendid) バックエンドのサブトランザクションキャッシュ内 のサブトランザクション数、そのキャッシュがオー バーフローしているかを出力。 引数は pid ではなく backendid。
  16. 新たなロール 44 関数名 説明 pg_create_subscription データベースの CREATE 権限を持つユーザが サブスクリプションを作成 できるロール。以前

    はサブスクリプションはスーパーユーザしか 作成でき ませんでした。 pg_use_reserved_connections パラメータ reserved_connections で予約した 接続数を使って接続できるロ ール。 reserved_connections は本バージョンで追加 されたパラメータで、ス ーパーユーザ用の superuser_reserved_connections とは別に予 約する接続 数を指定し、デフォルトは 0 です。
  17. Mesonビルド 45 PostgreSQL のビルドは長らく Linux では Autoconf、 Windows では Perl

    スクリプトによる MSVC ビルドシステム が利用されてきましたが、昨今ではいずれも古くなり開発 におけるメンテナンスが難しいものとなってきました。 そこで、PostgreSQL 16 からは近年広く使用されるように なったユーザフレンドリーな Meson ビルドシステムをサポー トするようになりました。
  18. 非互換な変更 47 PL/pgSQL のカーソル仕様変更 主キーで NULLS NOT DISTINCT インデックスが禁止 REINDEX

    DATABASE 仕様変更 継承テーブル/パーティションテーブルにおける生成式の 仕様変更 pg_walinspect で関数廃止