VACUUM Simulatorを使ってVACUUMをもっと理解しよう Exploring Postgres VACUUM with the VACUUM Simulator PostgreSQL Conference Japan 2023 November 24, 2023
トランザクションのACID特性のうち、Isolation(隔離性)について整理する。 検証環境検証には、PostgreSQL 10.5を独自ビルドしたものを利用する。 (gdbでデバッグできるように最適化オプションを無効にした) 参考 PostgreSQL 9.4.4をソースコードからインストールする # select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 10.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row) #
久しぶりにPostgreSQLの門に入ったので 前に触ったのは、8.1.2~8.1.6くらいだったと思います。その間、非エンジニア業もやってた(企画系および管理系)ので、完全に忘れてた。 なので、謙虚に入門したいと思います。 OracleやMySQLから移ってくるにあたって、嵌りどころ2つ DDLにもトランザクション(Commit/Rollback)がある なので、DDL叩いても、Commit打たないと他のセッションから認識されない。 ていうか、DDL叩くと「テーブルレベルの排他ロック(ACCESS EXCLUSIVEロック)」がかかって、Commit/Rollbackするまで、他セッションから参照すらできない。。。 試しにDDL投げてCommit打たないまま、他セッションからSELECT投げると、処理が返ってきません。 DDL投げたセッションでCommitを打った瞬間に、Selectの結
この記事は「PostgreSQL Advent Calendar 2020」の 16日目です。 GPU版PostGISの他に、今年のPG-Stromの機能強化のうち比較的大きめのものについてもご紹介したいと思います。 GPUメモリストア(Gstore_Fdw)とは GPUデバイスメモリ上に予め確保した領域にデータを保存し、これをPostgreSQLのFDW(Foreign Data Wrapper)を通じて読み書きする機能。GpuScan/GpuJoin/GpuPreAggといったPG-Stromの提供する各種ロジックにおいてデータソースとして活用する事ができ、その場合、ストレージやホストRAM上のバッファからデータを読み出す必要がないため、その分の処理を節約する事ができる。 この手の機能を持ったGPU-DBというのは他にもあるが、Gstore_Fdwのポイントは更新系ワークロードもきちん
要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事でJava + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある
PostgreSQL performance degrades rapidly with more connections. Credit: brandur.org. Over the last few years, the software development community’s love affair with the popular open-source relational database has reached a bit of a fever pitch. This Hacker News thread covering a piece titled “PostgreSQL is the worlds’ best database”, busting at the seams with fawning sycophants lavishing uncondition
用途 時間計測したいけど、結果の行表示とか余計なものは全くいらない、ってケースありますよね。性能検証やってるときとか。 何百行何千行も取れるようなSQL流すと、表示するのも萎える。 pager有効だと「--More--」って出て止まる。これは「q」で残りの表示はスキップできるけど、それもめんどくさい。 pager無効にすれば余計な操作はいらなくなるけど、表示処理が重いし。 結論 psqlでログインして「\timing」で実行時間表示モードをONにした後、以下を実行します。 その1:メタコマンド「\g」を使って、/dev/nullにリダイレクトする。 SELECT ...(任意のクエリ) \g |> /dev/nullWindowsのコマンドプロンプトだと、Nullへのリダイレクトは「>nul」、Powershellだと「> $null」が該当するらしいのですが、これ使うと「The synt
そーだいなる DBRE Nightでの登壇資料です https://connpass.com/event/138437/ # 紹介資料 - https://speakerdeck.com/soudai/shi-xing-ji-hua-falsehua - https://www.youtube.com/channel/UCeenIljXnSwrwYEU-YBE2qA/feed - https://speakerdeck.com/soudai/postgresql-architecture-and-performance-monitoring - https://gihyo.jp/dev/feature/01/dex_postgresql/0002 - https://lets.postgresql.jp/documents/technical/query_analysis/1 - http
図1 主なプロセスの流れ PostgreSQLは、ライタがデータファイルやインデックスファイルをディスクに更新しています。ただし、その更新は、コミットに合わせてリアルタイムで行われているわけではありません。性能向上のため、チェックポイントと呼ばれる更新タイミングが発生するまでは、更新があっても共有バッファにデータを貯めておきます。この貯められたデータをダーティページと呼びます。そしてチェックポイントのタイミングで、チェックポインタがダーティページをディスクに書き込みます。 そのため、共有バッファに更新情報を貯めている間に障害が起きると、ダーティーページを失う可能性があります。それを防ぐために、共有バッファ中のデータに対してどのような更新を行ったかの情報を保存しているのがWALです。WALはコミットのタイミングでWALライタが記録しています。クラッシュリカバリが必要になったときは、WALの中
弊社で某テック・リーダーの遺産として「PostgreSQL 運用管理トレーニング」が1月に実施されたのはまだ記憶に新しいところ。 あのときのリーダーの言葉、憶えているうちに書き留めておこう。 「Managed Service で RDB を使う時代になっても、この研修で扱う知識はDBAもApplication Engineerも持っておくべきだと信じて、企画し実現しました」 (この記憶はほんとうか? 意訳や美化が入っているかもしれない) 事例の1つを共有しましょう。 担当プロダクトの背景事情 担当プロダクトで使っているPostgreSQLをメジャーアップするには、現況を把握して変更影響を洗い出す作業から始めます。 現況把握のひとつとして、postgresql.conf(AWS RDSだとparameter group) の状況調査をしました。 重点ポイント PostgreSQLデフォールト
TL;DR 聴講メモ Intro into durability PostgreSQLのCHECKPIONT CHECKPOINT中にエラーが発生したら? fsyncへの2つの間違った期待 なぜ今になって問題が明らかになってきた? そもそもなぜBufferd I/Oなのか? どうやって直すかか 参考リンク 質疑 最後に 先日PostgreSQLの新しいマイナーバージョンがリリースされました。このマイナーリリースでメインとなる修正は「fsync周りのバグ修正」で、このバグは間違ったfsyncに対する間違った認識から約20年間存在してたバグということで注目されていました。 このバグについてPostgreSQLのコミッタ(Tomas Vondra氏)が解説しているセッションが、先々週開催されたFOSDEM 2019でありました。私もFOSDEM 2019に参加していたのですがその際は裏セッション
パラレルクエリの目的 EXPLAIN(実行計画)の見方 対応している操作 9.6 10 11 対応していない操作 読み込み専用 参考資料 PostgreSQLでは、バージョン9.6からパラレルクエリが利用可能です。Oracle、DB2でもパラレルクエリは実装されていますが、PostgreSQLのパラレルクエリはどのような特徴があるのでしょうか。簡単にパラレルクエリの概要を紹介します。 パラレルクエリの目的 パラレルクエリは、複数のCPUを使ってクエリを並列(Parallel)に処理する機能です。そのため、クエリの実行時間の短縮が期待できます。並行(Concurrent)とは異なるので注意。 EXPLAIN(実行計画)の見方 パラレルクエリが使われた場合の実行計画の読み方は注意が必要です。 まずは、パラレルクエリOFFの実行計画(ANALYZE, VERBOSE)。 =# explain (
DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。 こんにちは。そーだい(@soudai1025)です。 新しいサービスを始めるとき、必ずと言っていいほどデータベースは利用されています。また今稼働しているサービスの多くでも、RDBMSをはじめ、いろいろなデータベースが利用されています。そんなに広く利用されているデータベースだからこそ、多くの問題の元になるのもまた事実です。 そこで今回は、Webサービスを中心にデータベースの選び方、設計についてお話していきたいと思います。そして私もまさに今、2011年から続くWebサービス「オミカレ」のRDBMSのリファクタリングに携わ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く