「ポストグレス」「ポストグレスキューエル」などとも読む。 オープンソース系RDBMS(Relational Database Management System) のひとつ。 最近のバージョンでは(SQL99の仕様に近い)オブジェクト指向リレーショナルデータベースとしての機能も充実してきており、その高機能さが特徴となっている。 同じオープンソース系RDBMSでも、機能よりも速度と扱いやすさを選んだMySQLとは対照的である。
前半は雑メモ 後半はタイトル通りの中身でハンズオンしたものを記事にした。 VACUUM 何する デッドタプル削除 フリースペースマップの更新 統計情報の更新 VACUUMはテーブルロックなしで並行アクセスが可能なのに対して、 VACUUM Fullはディスク容量を完全に解放する。テーブル全体をロックして、かなり時間がかかる。 いつ実行される 更新削除された行数 > vacuum_threshhold + vacuum_scale_factor * テーブルの行数 デフォルト値 vacuum_threshhold: 50 vacuum_scale_factor: 0.2 デフォルト設定で、100…
SQLiteで開発していたローカルWebアプリを、PostgreSQLへ移行する必要がありました。 ChatGPTに相談したところ、Supabaseという選択肢を提案してくれました。 「なるほど、PostgreSQLがサーバレスで使えるなら楽そう」と思い、Supabaseを採用してみたのですが…… DB接続情報の場所が分からず大苦戦。 この記事では、Supabaseの最新UIでPostgreSQL接続情報を探す方法、 そして FastAPI + SQLModel 環境でPostgreSQLへ切り替える手順をまとめます。 🔧 開発環境 バックエンド:FastAPI フロントエンド:React D…
パーティショニングわからん 概念としては少し理解してるつもりだった。 なんかキーを指定して、物理的にデータを分割して 指定したキーに沿って分割した、キーに対する部分条件に対して部分的にアクセスする際に パーティショニング有無でレコードに対するアクセス速度、効率がそれなりに変わることがある。 ただし、データ量については非常に大きな量ないと効果はあまりない。 しかし、実際に扱ってみるとなんだこれはということが多々あったため、今一度調べ直そうと思った。 パーティショニングとは パーティショニングは、大きなテーブルを複数の物理的な小テーブル(パーティション)に分割する技術。 論理的には単一のテーブルと…
PostgreSQLのバージョンをv15からv18にアップグレードした。 仕事でAWSのDBバージョンを上げる作業を見ていて、そういえば今個人で動かしているCloudSQLのバージョンなんだけっけかと思ったらv15でした。 まだサポートされているバージョンですが、使えなくなったりする前に一気にv18にしました。 作業がを開始する前にv15の最新のバックアップをオンデマンドでとっておき、terraformの構成変更を適用して、v18で起動するのを待ちました。 resource "google_sql_database_instance" "shoes_manager" { project = m…
ゆるく書く 約6年くらいずっとRDBMSはMySQLを使ってきてたけど、Postgresを触る機会があって「すげー!こんな機能MySQLにも欲しかった!」と思った機能をMySQL onlyなユーザー向けにどういうものかを健忘録も含めて書いてみる MySQLのシンプルさに慣れてしまっているのでOracleDBとか使ったら高機能さに目ん玉飛び出るんじゃないかと思うのでいつか使ってみたい RLS (Row Level Security) 今回のPJでポスグレを採用した理由でもあるRLS DBレベルでよりセキュアに設計できるので安心感がある CREATE TABLE accounts (manager…
最近そこそこの質でPostgreSQLを使い始めた。 それをきっかけに最低限押さえておくべき設定値を優先度順に整理した。 特にDocker環境での注意点も記載する。 最優先設定(★★★★★):どんな環境でも必ず確認 max_connections 一言メモ: 同時接続できるクライアント数の上限 詳細: デフォルトは100。この値を超えると新規接続が拒否される。各接続はメモリを消費するため、闇雲に大きくするとシステム全体が遅くなる。開発環境なら10-20、小規模本番なら50-100程度が目安。アプリ側でコネクションプーリング(接続を使い回す仕組み)を使うのが正攻法。 Docker特有の注意: コ…
SQLでNULLを許容しているカラムの同一性を検証するには、以下のようなSQLを今まで書いていた SELECT columnA FROM tableA LEFT OUTER JOIN tableB ON tableA.id = tableB.id WHERE tableA.columnA IS NULL AND tableB.columnA IS NULL OR tableA.columnA=tableB.columnA カラムがNULL同士はOK、または値が入っていればその値が一致した場合という条件である。 実際の指示通りなので正しいのだが、NULLの条件をついつい忘れたり、文が長くなるので…
概要 PostgreSQL Anonymizer は、PostgreSQL 上で PII(個人識別情報)や機微データをマスク/匿名化する拡張機能です。セキュリティラベルでテーブルや列に対するマスキングルールを宣言する「宣言的」な設計が特徴です。本記事では利用頻度の高い以下の 3 方式に絞り、仕組み・ユースケース・制限を整理します。また、v2.4.1 を前提に調査しています。 Static Masking Dynamic Masking Anonymous Dumps 本記事ではポイントのみまとめているため、詳細は公式ドキュメントを参照ください。 PostgreSQL Anonymizer St…
関連記事 概要 参考情報 関連記事 GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ 概要 以下、自分用のメモです。忘れないうちにメモメモ。。。 PotgreSQL 18がリリースされてたんですね。後から新機能を勉強するためにここにメモメモ。。。 今回の目玉は、「非同期I/O処理」が導入されたことによる性能向上ですね。 www.publickey1.jp www.postgresql.org www.postgresql.jp www.enterprisedb.com 参考情報 過去の記事については、以下のページからご参照下さい。 ブログ過…
関連記事 概要 参考情報 関連記事 GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ 概要 以下、自分用のメモです。忘れないうちにメモメモ。。。 PostgreSQLのEXPLAINについて、とても分かりやすく説明してくれている資料です。 speakerdeck.com 同じ方の、VACUUMについての資料もとても勉強になりました。 speakerdeck.com 公開してくださっていることに感謝 m(_ _)m 参考情報 pganalyze.com 過去の記事については、以下のページからご参照下さい。 ブログ過去記事置き場 サンプルコード…