「ポストグレス」「ポストグレスキューエル」などとも読む。 オープンソース系RDBMS(Relational Database Management System) のひとつ。 最近のバージョンでは(SQL99の仕様に近い)オブジェクト指向リレーショナルデータベースとしての機能も充実してきており、その高機能さが特徴となっている。 同じオープンソース系RDBMSでも、機能よりも速度と扱いやすさを選んだMySQLとは対照的である。
【結論】 PostgreSQLのtsvectorとGINインデックスを組み合わせた全文検索は、従来のLIKE検索と比較して最大71%の高速化を実現できる。tsvectorは文書を重複のない語彙素のソート済みリストに変換し、GINインデックスが転置インデックス構造で高速検索を可能にする。ただし1MBのサイズ制限があるため、長文データでは事前の文字数制限が必要である。 【根拠】 PostgreSQLフルテキスト検索の実装でメール検索を最大71%高速化した話 上記の記事は、PostgreSQLフルテキスト検索の実装事例を参考に、tsvectorとGINインデックスの技術的仕組みについて調査した内容で…
Next.js + Prisma プロジェクトでローカル開発用の PostgreSQL 環境を Docker Compose で構築し、Prisma から接続する方法を解説します。 アプリ全体を Docker 化する方法もありますが、この記事では DB だけ Docker 化 するシンプルな構成を紹介します。 この記事でわかること Docker Compose で PostgreSQL を起動する設定 Prisma との接続設定 前提条件 Docker Desktop がインストールされていること Next.js + Prisma プロジェクトが作成済みであること 1. docker-comp…
きっかけ PostgreSQLで大文字小文字を区別しない文字列比較を行う方法という記事を読んで、citextという型(EXTENSION)やLOWER()を使った式インデックスについて知った。 記事自体は非常に分かりやすく、実用的な内容で完結していたので読みながら浮かんだいくつかの疑問について深堀していくことにした。 PostgreSQLには他にも面白い型やインデックスがあるのだろうか 文字列のインデックスは日本語だとどう処理されるのか 式インデックスの仕組み 記事とは別の角度から、これらの疑問をClaude(生成AI)との対話を通じて調べてみることにした。 調査過程と発見 疑問1: 他の面白…
具体的なエラーメッセージ Caused by: PG::ObjectInUse: ERROR: database "foobar_staging" is being accessed by other users (PG::ObjectInUse) DETAIL: There is 1 other session using the database. 対処法の一つ 一度ほかのデータベースに接続してから db:reset なりを実行する。 具体例 $ bundle exec rails console Loading production environment (Rails 8.0.3) f…
はじめに こんにちは、スタメンにてにてエンジニアインターンをしております中村です。 「TUNAGチャット」では、データベースとしてGoogle Cloud(旧GCP)のAlloyDB for PostgreSQLを利用しています。以前から平日昼間のCPU使用率は55~65%の水準でしたが、ある時期からデプロイのタイミングでDBのCPU負荷が100%に達し、一時的に障害となる事態が問題となりました。 一週間で2度、CPU使用率が100%までスパイクした様子 調査の結果、今回のDB負荷の原因は「オプティマイザの行数推定」というRDBMSの基礎的な仕組みに関わるものでした。 本記事では、以下のアプロ…
はじめに この記事は FOSS4G Advent Calendar 2025 の20日目の記事です。 qiita.com 今年の FOSS4G 2025 Japan にて「クラウド環境におけるマネージドなPostgreSQL/PostGIS の選択肢」を聞いて、最近のマネージドなデータベースサービスが気になっていました。そこで、発表の中でも紹介していたクラウド ネイティブなデータベースサービス Neon を触ってみました。 ここでは、データベースサービス Neon を使用して ArcGIS の JavaScript SDK を使って地図アプリケーションを作成してみました。 サンプルアプリは、G…
Java読書会BOF 主催「Spring徹底入門 第2版」を読む会(第14回)を12月20日(土)に開催しました。 今回は、12章 Thymeleafの残りと14章チュートリアルの途中、エンティティの実装まで読み進めました。14章のチュートリアルは、参加者がそれぞれ持参のPCで実際にPostgreSQLのユーザー・データベース作成、Spring Bootのプロジェクトを作成してソースコードの打ち込みをしながら進めました。 チュートリアルにおいて引っかかったことなど 実際に手を動かしながら実施すると、書籍を読むだけでは気づかないことや引っかかる事項がいろいろと出てきます。これらを調べ議論しながら…
参考 実行計画を可視化する「pev2」を使ってパフォーマンスチューニングを始めてみよう! はじめに この記事はハンズオンを意識したpev2の紹介記事。この記事を一通り見て、pev2の使い方についてある程度の知識を得ることができた。 また、いくつかの疑問について生成AIにて生成し、私が調査考察した上で回答し実際どうだったかを生成AIによって添削した。 学習内容のQ&A Q1: 実行計画を読む際、どの項目を最初に注目すべきか? A1: 実行時間 コストは推定値で実際の性能と乖離する場合がある 実際の実行時間が最も信頼できる指標 実行時間とコストの両方を状況に応じて使い分け 実際の検証結果、開発環境…
こんにちは、UPSIDERでエンジニアリングマネージャーを務めている小池です。 この記事は、UPSIDER Tech アドベントカレンダー 2025の12月17日公開の記事です。 UPSIDERのアドベントカレンダー2025 では、Tech・Corporate・Bizの3つに分かれて、それぞれのチームメンバーが日替わりでさまざまな内容をお届けします。 Techはこちら: UPSIDER Tech Advent Calendar 2025 - Adventar Corpはこちら: UPSIDER Corp Advent Calendar 2025 - Adventar Bizはこちら: UPSI…
はじめに 以下の記事を読んで、PostgreSQLのオプティマイザの挙動とGEQOについて学んだので、その内容を整理する。 【やらかしアドカレ】あの日見た障害の原因を僕達はまだ知らなかった。 【PostgreSQL】ヒント句効かない時は遺伝的問い合わせ(GEQO)が原因かも これらの記事では、データ量変動によりオプティマイザがフルスキャンを選択してしまう問題と、pg_hint_planのヒント句が効かない状況について、実際の障害事例とその解決過程が報告されている。特にGEQO(遺伝的問い合わせ最適化)とpg_hint_planの非互換性は、ドキュメントを読まないと気づきにくい問題だ。 本記事で…