データベース
勉強会について Transactional Information Systems 5章 MVCC勉強会 第九回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。本エントリのTX本とは "Transactional Informa…
勉強会について Transactional Information Systems 5章 MVCC勉強会 第八回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…
勉強会について Transactional Information Systems 5章 MVCC勉強会 第七回 - connpass の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示してい…
Joe Celko はデータベースにおいて、行・列という用語を使うべきであり、レコード・フィールドという表現は適切でないと主張しています。これは論理的存在と物理的存在を分けるべきとの考えからです。
はじめに MCSR (Multiversion Conflict Serializability) を知るには以下の本及び記事を読むのが最も理解に近づきます。Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (The Morgan Kaufman…
トランザクション理論における polygraph とは何かを説明し、それを利用して History の VSR (View Serializability) 判定に利用できることを示します。
勉強会について Transactional Information Systems 5章 MVCC勉強会 第二回 の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示しています。Transa…
勉強会について Transactional Information Systems 5章 MVCC勉強会 第一回 の議論メモです。自分のメモをベースにまとめています。発言の聞き間違い、解釈違いの可能性があることをご了承ください。特記の無い引用は本で議論した箇所を示しています。Transa…
PostgreSQLの実行計画に現れる One-Time Filter とは、クエリ―実行時に1回だけ評価すればよいフィルターのことです。本記事ではこれを解説します。
PostgreSQL 10 以前では WHERE 句で = 演算子の左辺・右辺に同じ列名を指定すると、行数推定が不正確になることがあります。この問題は PostgreSQL 11 で改良されました。
PostgreSQL のシリアライザブル分離レベルのスナップショットはリピータブルリード分離レベルと同様に「トランザクションの最初のトランザクション制御以外の文の開始時点のスナップショットを見る」ようにふるまいます。このふるまいを動作から確認しました…
課題 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…
始めに db tech showcase Tokyo 2018 (db tech showcase Tokyo 2018 | db tech showcase) 今後のDBのトランザクション処理のあり方について徹底討議する ~"InvisibleWriteRule: トランザクションの書込み最適化" を中心に にパネラーとして参加してきました…
データベースを扱う方にとって、トランザクションは当たり前の存在です。そんな当たり前のものがどういった理論と技術で実現されているか、そしてそれらが今も進化していることをご存知でしょうか。トランザクションをもっと深く知りたい方に向けて、参考と…
はじめに トランザクションの Recoverability を理解するうえで Strictness (ST) と Rigorousness (RG) を避けては通ることができません。ただ、日本語の資料が少ないうえに用語の定義が若干あいまいなケースも見受けられました。そこで、本エントリでは資料…
はじめに 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) スペシャルセッション データで見る、経験で語る、日本のデータベーススペシャリストのリアリティ の聴講メモです。本セッションはパネルディスカッション形式で行われました。 …
はじめに PostgreSQLのトランザクション分離レベルにはシリアライザブル(Serializable)があります。ドキュメントのシリアライザブル分離レベルの説明には以下の記載があります。 異常を防止するためにシリアライザブルトランザクションを使用するのであれば…
PostgreSQL の実行計画において、Bitmap Index Scan の後に実行される Bitmap Heap Scan で "Recheck cond" と出力されます。Index Scan をしているにも関わらず、なぜ Heap Scan でインデックスの検索条件を再チェックする必要があるのか解説します。
はじめに 「達人に学ぶSQL徹底指南書」(以下、達人SQL)の「1-1 CASE式のススメ」には GROUP BY 句に CASE 式の含まれるSQLが登場します。達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)作者: ミック出版社/メーカー: 翔泳社発売日: 2008/02/07メディア: 単行…
事象 Database Configuration Assistant (DBCA) を使用してデータベースを作成するとき、「新規リスナー作成」や「Enterprise Manager (EM) Database Express の構成」で、空きポートが使用中とエラー表示される。[DBT-06103] ポート(1,521)がすでに使用中で…
SQLのGROUP BY句の解説記事は多くありますが、本エントリでは他の記事とは解説方法を変え、処理の段階を追って説明します。また、CASE式との組み合わせにも触れます。
はじめに PostgreSQLの実行計画の読み解き方は公式マニュアルで説明されています。PostgreSQL 10 でのリンクを示します。 14.1. EXPLAINの利用ですが、若干分かり辛い個所があるため、本エントリでは以下の観点に着目して補足することにします。 ノードの実…
はじめに ネストしたサブクエリ(副問合せ)はEXISTS条件でよく利用されます。ですが、このサブクエリのフィルタ条件次第ではパフォーマンス問題となることがあります。これを Oracle Database で改善する例がOracleの記事(以下、「記事」とだけ表記した場…
Oracle Database には LNNVL というファンクションがあります。 LNNVL(condition) LNNVL の説明を Oracle Database 12c R2 マニュアルから引用します。 LNNVLは、条件のオペランドの1つまたは両方がNULLの可能性がある場合にその条件を簡単に評価する方法を…
はじめに データベースのトランザクション(特にスケジュール)の理論を勉強しようとすると、エルブラン・セマンティクス(Herbrand Semantics)の理解が必要となります。Herbrand Semantics の解説は以下の本・章にあります。Transactional Information Syste…
はじめに Transaction management におけるwell-formedなトランザクションとlegalなスケジュールについて説明します。主に以下の資料を参考にします。 http://www.dis.uniroma1.it/~rosati/gd/1-concurrency.pdf P60付近を参照ください。 ここでは exclusive…
はじめに PostgreSQLマニュアル「13.2. トランザクションの分離」にはトランザクション分離レベルの表が記載されています。この表の記載は9.4以前と9.5以降で変わっており、PostgreSQLの挙動が変わったと勘違いしてしまうかもしれません。ですが、マニュアル…
概要 motononeなスケジュールのクラスでは、スケジュールから任意のトランザクションが消失してもスケジュールのクラスが変わりません。CSRはmonotoneです。CSRだけではabortを扱うのが難しいため、ロックによる手法を組み合わせます。SS2PLによって作られる…