「ポストグレス」「ポストグレスキューエル」などとも読む。 オープンソース系RDBMS(Relational Database Management System) のひとつ。 最近のバージョンでは(SQL99の仕様に近い)オブジェクト指向リレーショナルデータベースとしての機能も充実してきており、その高機能さが特徴となっている。 同じオープンソース系RDBMSでも、機能よりも速度と扱いやすさを選んだMySQLとは対照的である。
はじめに 以下の記事を読んで、PostgreSQLのオプティマイザの挙動とGEQOについて学んだので、その内容を整理する。 【やらかしアドカレ】あの日見た障害の原因を僕達はまだ知らなかった。 【PostgreSQL】ヒント句効かない時は遺伝的問い合わせ(GEQO)が原因かも これらの記事では、データ量変動によりオプティマイザがフルスキャンを選択してしまう問題と、pg_hint_planのヒント句が効かない状況について、実際の障害事例とその解決過程が報告されている。特にGEQO(遺伝的問い合わせ最適化)とpg_hint_planの非互換性は、ドキュメントを読まないと気づきにくい問題だ。 本記事で...
初めまして、NTTドコモ 第二プロダクトデザイン部の星合です。 本日は、アドベントカレンダー3日目です。 今日はOSS製品のコミュニティ活動の取り組み例や私のモチベーションについて紹介します。 OSSとは? 知ってる方もいらっしゃるとは思いますが、簡単にOSSのおさらいをしておきます。
こんにちは、Plex Job 開発チームの高岡です。 先日 PLEX TechCon 2025 が開催されました。 惜しくも登壇機会を得られなかったため、本記事にて発表する予定だった内容をまとめてみました。 来年こそは登壇を勝ち取ります 🔥 ▼ 当日の様子はこちら PLEX TechCon 2025 レポート - PLEX Product Team Blog はじめに PostgreSQLの構成 プロセス構成(全体図の赤の要素) メモリ構成(全体図の黄色の要素) 調査した3つのログ 1. チェックポイント処理のログ📝 概要 チューニングポイント 2. 自動バキューム処理のログ 🧹 概要 チュー...
TOASTとは PostgreSQLには「TOAST」という、大きなデータを効率的に扱うための仕組みがある。 TOASTは "The Oversized-Attribute Storage Technique"(過大属性格納技法) の略で、PostgreSQLのページサイズ(8KB)を超えるような大きなデータを保存する際に自動的に働く。名前の由来は、データを「スライスしたパン(toast)」のように小さなチャンク(塊)に分割して管理することから来ている。 TOASTの基本的な動作 対象データ型:TEXT、BYTEA、JSON、配列など、可変長データ型のみ 動作タイミング:データが約2KB(正確...
以下の記事を読んだことがきっかけで、PostgreSQL 18 の新機能、とくに I/O 性能改善や UUIDv7 まわりの挙動について疑問が湧いたため、関連知識を調べて整理する。 参考記事 PostgreSQL 18: The AIO Revolution, UUIDv7, and the Path to Unprecedented Performance 調べた疑問点 記事を確認していて、特に次の点を掘り下げる必要があると感じた: AIO(Asynchronous I/O)がなぜ高速化につながるのか AIO が影響するワークロードの性質 UUIDv7 がインデックス構造と相性がよい理由 メ...
以下の記事を読んだことがきっかけで、RDBにおける高速検索の設計について疑問が湧いたため、関連知識を調べて整理する。 参考記事 - 検索が爆速になるデータベース設計を公開します 調べた疑問点 記事を読んでいて、特に次の点が気になった: なぜ「検索専用テーブル」を作ると高速になるのか 型最適化・アラインメント調整が検索性能にどう影響するのか 余計なカラムを持たないことがなぜ効くのか JSON に詰め込む方式が遅くなる理由 検索専用テーブルの自動生成(機械生成)がどのような場面で有効か、逆にどこで不要か なぜ検索専用テーブルは高速なのか 検索専用テーブルの最大の目的は、RDBが本来得意とする"単純...
はじめに 以下の記事でUUID v7とv4の違いについて詳しく解説されており、データベース性能の改善効果について疑問が湧いたため、技術的な背景を深掘りしてみた。 参考記事: [UUIDv7 vs UUIDv4] 違いをまとめてみた|使い分けの特徴やDBパフォーマンス差の比較 https://zenn.dev/kudotaka0421/articles/f01a6a6ff6e352 2024年5月にRFC 9562として正式に標準化されたUUID v7について、従来のUUID v4と比較してデータベースのINSERT性能が大幅に向上するという話の技術的な背景を調べた。 結論から言うと、UUID ...
前半は雑メモ 後半はタイトル通りの中身でハンズオンしたものを記事にした。 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...
パーティショニングわからん 概念としては少し理解してるつもりだった。 なんかキーを指定して、物理的にデータを分割して 指定したキーに沿って分割した、キーに対する部分条件に対して部分的にアクセスする際に パーティショニング有無でレコードに対するアクセス速度、効率がそれなりに変わることがある。 ただし、データ量については非常に大きな量ないと効果はあまりない。 しかし、実際に扱ってみるとなんだこれはということが多々あったため、今一度調べ直そうと思った。 パーティショニングとは パーティショニングは、大きなテーブルを複数の物理的な小テーブル(パーティション)に分割する技術。 論理的には単一のテーブルと...
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル