ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

データベース

Database Concurrency Control Papadimitriou 読書会 第15回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読会 第15回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示していま…

PostgreSQLはトランザクション内で制約を一旦外して戻すことができる

はじめに こんな tweet を拝見しました。ポスグレはDDLもtxに入れられると聞いたけど、一旦制約をはずしてなんか操作して制約を戻す、もアトミックにできるのかなー。— デヴすぴスラ (@dev_supisula) November 20, 2019遅延制約(DEFERRABLE)を使えば制約を一…

集合に含まれない組み合わせをクエリで抽出する

今回のクエリの説明例として、データベーススペシャリスト平成27年春期 午前Ⅱ 問11 の問題・解答を引用します。<問題> 庭に訪れた野鳥の数を記録する"観測"表がある。観測のたびに通番を振り、鳥名と観測数を記録している。AVG関数を用いて鳥名別に野鳥の…

SQLの外部結合の実行ステップを理解する

はじめに プログラマのためのSQL 第4版(以下、「訳書」とする)「25.3.1 外部結合の歴史」には外部結合の実行ステップ及び実行例が記述されています。プログラマのためのSQL 第4版作者: ジョー・セルコ,Joe Celko,ミック出版社/メーカー: 翔泳社発売日: 201…

NTTDATATC2019「PostgreSQL 12 は ここがスゴイ!」聴講メモ

はじめに NTTデータ テクノロジーカンファレンス 2019(NTTデータ テクノロジーカンファレンス 2019 ~ 未来を創る NTT DATA の確かな技術力 ~) 【テクノロジー】PostgreSQL 12 は ここがスゴイ!~性能改善や pluggable storage engine などの新機能を徹…

Database Concurrency Control Papadimitriou 読書会 第7回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読書会 第7回 - connpass の議論メモです。 ※第6回は休講でした。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議…

Database Concurrency Control Papadimitriou 読書会 第5回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読書会 第5回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

Database Concurrency Control Papadimitriou 読書会 第3回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読書会 第3回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

Database Concurrency Control Papadimitriou 読書会 第2回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読書会 第2回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

Database Concurrency Control Papadimitriou 読書会 第1回 議論メモ

勉強会について Database Concurrency Control Papadimitriou 読書会 第1回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

Transactional Information Systems 5章 MVCC勉強会 第九回 議論メモ

勉強会について Transactional Information Systems 5章 MVCC勉強会 第九回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。本エントリのTX本とは "Transactional Informa…

Transactional Information Systems 5章 MVCC勉強会 第八回 議論メモ

勉強会について Transactional Information Systems 5章 MVCC勉強会 第八回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

Transactional Information Systems 5章 MVCC勉強会 第七回 議論メモ

勉強会について Transactional Information Systems 5章 MVCC勉強会 第七回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…

データベースはレコード・フィールドではなく、行・列と表現すべき

概要 Joe Celko はデータベースにおいて、行 (row)・列 (column) という用語を使うべきであり、レコード (record)・フィールド (field) という表現は適切でないと主張しています。これは論理的存在と物理的存在を分けるべきとの考えからです。 はじめに 先日…

MCSR の conflict が r-w (read-write) だけなのはなぜなのか?

はじめに MCSR (Multiversion Conflict Serializability) を知るには以下の本及び記事を読むのが最も理解に近づきます。Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufman…

トランザクション理論における polygraph と History の VSR 判定

目的 トランザクション理論における polygraph とは何かを説明し、それを利用して History の VSR (View Serializability) 判定に利用できることを示します。 略語 本エントリ内では以下の略語を使います。 TX本:Transactional Information Systems Transac…

Transactional Information Systems 5章 MVCC勉強会 第二回 議論メモ

勉強会について Transactional Information Systems 5章 MVCC勉強会 第二回 の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示しています。Transa…

Transactional Information Systems 5章 MVCC勉強会 第一回 議論メモ

勉強会について Transactional Information Systems 5章 MVCC勉強会 第一回 の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示しています。Transa…

PostgreSQL の実行計画に現れる One-Time Filter の読み解き方

テーマ PostgreSQLの実行計画に現れる One-Time Filter とは、クエリ―実行時に1回だけ評価すればよいフィルターのことです。例えば、次のようなクエリーで現れます。 SELECT * FROM pg_type WHERE CURRENT_DATE = '2018-12-01'::date;このWHERE句はクエリー…

PostgreSQL にてWHERE句で=演算子の左辺・右辺に同じ列名を指定すると行数推定が不正確になることがある

はじめに WHERE句で=演算子の左辺・右辺に同じ列名を指定したクエリを考えます。 SELECT count(*) FROM seq WHERE value = value;これは以下のクエリと等価です。 SELECT count(*) FROM seq WHERE value IS NOT NULL;value = value で value = NULL であれ…

PostgreSQL のシリアライザブル分離レベルにおけるスナップショットのタイミング

PostgreSQL 10 のマニュアルには以下の記載があります。 13.2.2. リピータブルリード分離レベル リピータブルリードのトランザクション内の問い合わせは、トランザクション内の現在の文の開始時点ではなく、トランザクションの最初のトランザクション制御以…

トランザクションで w-w はなぜ Lost Update ではないか?

課題 db tech showcase Tokyo 2018 (db tech showcase Tokyo 2018 | db tech showcase) でノーチラステクノロジーズ 神林さんが以下のテーマで講演されました。 MVCCにおけるw-w/w-r/r-wのあり方とcommit orderのあり方の再検討~Sundial: Harmonizing Concu…

DBTS2018「今後のDBのトランザクション処理のあり方について徹底討議する」パネラー参加記録

始めに db tech showcase Tokyo 2018 (db tech showcase Tokyo 2018 | db tech showcase) 今後のDBのトランザクション処理のあり方について徹底討議する ~"InvisibleWriteRule: トランザクションの書込み最適化" を中心に にパネラーとして参加してきました…

トランザクションをもっと深く知るための資料集

はじめに データベース(DB)を扱う方にとって、トランザクションは当たり前の存在です。そんな当たり前のものがどういった理論と技術で実現されているか、そしてそれらが今も進化していることをご存知でしょうか。トランザクションをもっと深く知りたい方に向…

トランザクションの Strictness と Rigorousness の定義を再確認する

はじめに トランザクションの Recoverability を理解するうえで Strictness (ST) と Rigorousness (RG) を避けては通ることができません。ただ、日本語の資料が少ないうえに用語の定義が若干あいまいなケースも見受けられました。そこで、本エントリでは資料…

PostgreSQLの一部の関数はトランザクション分離レベルに従わない

はじめに PostgreSQL 8.4.1 で pg_dump と index の再作成を同時に実行すると "ERROR: cache lookup failed for index" の発生することがあるのはなぜか?との質問に、tom lane さんがこんな回答をしていました。 pg_dump runs in a serializable transactio…

DB Online Day 2018 Summer「日本のデータベーススペシャリストは最終的にどこを目指すべきか?」聴講メモ

セッションについて DB Online Day 2018 Summer (DB Online Day 2018 Summer) 基調講演 日本のデータベーススペシャリストは最終的にどこを目指すべきか? の聴講メモです。講演者は 関 俊洋 さん [株式会社アシスト] です。自分のメモをベースにまとめてい…

DB Online Day 2018 Summer「データで見る、経験で語る、日本のデータベーススペシャリストのリアリティ」聴講メモ

セッションについて DB Online Day 2018 Summer (DB Online Day 2018 Summer) スペシャルセッション データで見る、経験で語る、日本のデータベーススペシャリストのリアリティ の聴講メモです。本セッションはパネルディスカッション形式で行われました。 …

PostgreSQLのシリアライザブルとコミット/ロールバックと遅延可能な読み取り専用トランザクションの関係

はじめに PostgreSQLのトランザクション分離レベルにはシリアライザブル(Serializable)があります。ドキュメントのシリアライザブル分離レベルの説明には以下の記載があります。 異常を防止するためにシリアライザブルトランザクションを使用するのであれば…

Bitmap Index Scan の後の Bitmap Heap Scan でRecheck処理が行われることの解説

はじめに PostgreSQL の実行計画において、Bitmap Index Scan の後に実行される Bitmap Heap Scan で "Recheck cond" と出力されます。Index Scan をしているにも関わらず、なぜ Heap Scan でインデックスの検索条件を再チェックする必要があるのか解説しま…