Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データベースと応用システム:トランザクション管理
Search
自然言語処理研究室
June 20, 2014
Education
1
3k
データベースと応用システム:トランザクション管理
自然言語処理研究室
June 20, 2014
Tweet
Share
More Decks by 自然言語処理研究室
See All by 自然言語処理研究室
データサイエンス14_システム.pdf
jnlp
0
380
データサイエンス13_解析.pdf
jnlp
0
480
データサイエンス12_分類.pdf
jnlp
0
330
データサイエンス11_前処理.pdf
jnlp
0
460
Recurrent neural network based language model
jnlp
0
130
自然言語処理研究室 研究概要(2012年)
jnlp
0
130
自然言語処理研究室 研究概要(2013年)
jnlp
0
93
自然言語処理研究室 研究概要(2014年)
jnlp
0
110
自然言語処理研究室 研究概要(2015年)
jnlp
0
180
Other Decks in Education
See All in Education
Education-JAWS #3 ~教育現場に、AWSのチカラを~
masakiokuda
0
180
Are puppies a ranking factor?
jonoalderson
0
870
i-GIP 2025 中高生のみなさんへ資料
202200
0
500
ARアプリを活用した防災まち歩きデータ作成ハンズオン
nro2daisuke
0
110
日本の教育の未来 を考える テクノロジーは教育をどのように変えるのか
kzkmaeda
1
220
2025年度春学期 統計学 第3回 クロス集計と感度・特異度,データの可視化 (2025. 4. 24)
akiraasano
PRO
0
140
新卒研修に仕掛ける 学びのサイクル / Implementing Learning Cycles in New Graduate Training
takashi_toyosaki
1
170
より良い学振申請書(DC)を作ろう 2025
luiyoshida
1
3.3k
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
16k
社外コミュニティと「学び」を考える
alchemy1115
2
170
データ分析
takenawa
0
7.2k
2025年度春学期 統計学 第10回 分布の推測とは ー 標本調査,度数分布と確率分布 (2025. 6. 12)
akiraasano
PRO
0
150
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
GraphQLとの向き合い方2022年版
quramy
49
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
320
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Navigating Team Friction
lara
187
15k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
(c)長岡技術科学大学 電気系 1 データベースと応用システム トランザクション管理 山本和英 長岡技術科学大学 電気系
(c)長岡技術科学大学 電気系 2 トランザクションとは何? • データベースでの処理単位 • 例えば、銀行振込を考えると、 – 預金口座Aから出金して、
– 預金口座Bに入金する という処理で一つのトランザクションとなる。 • データベースを処理する際には、トランザクション単 位で成功、または失敗を保証する必要がある – 出金だけして中断、という状態は絶対に許されないの で直ちに入金するか、出金を取り消す(返金)必要が ある
(c)長岡技術科学大学 電気系 3 ACID特性 トランザクションは以下の4特性を満たす必要がある: • 原子性(atomicity) – 全部実行 or
全部不実行で終了 • 一貫性(consistency) – 整合性が取れていて矛盾がない • 独立性(isolation) – 複数のトランザクションを同時実行するのと順次実行す るので結果が同じになる • 耐久性(durability) – 障害があってもトランザクションの結果が残る
(c)長岡技術科学大学 電気系 4 コミットメント制御 原子性を確保するための下記機能のこと。 • コミット(commit) – トランザクション処理が成功した場合に、その結果を確 定させること
– 実行したすべての更新が反映される • ロールバック(rollback) – トランザクション処理が失敗した場合に、その結果を反 映させないこと – 実行したすべての更新が取り消される
(c)長岡技術科学大学 電気系 5 排他制御(同時実行制御) 一貫性と独立性を確保するための機能。 • トランザクションは複数を同時に実行させたい • しかし、何も制御せずに並行処理を許すとトランザク ション間で悪影響を与える可能性がある。これを防ぐ
のが排他制御。 • 排他制御の方法 – ロック – 時刻印アルゴリズム – 楽観的同時制御 • 通常はDBMSが自動的に行うが、アプリケーションから 指示することもできる
(c)長岡技術科学大学 電気系 6 直列可能性 二つのトランザクションT1とT2について、 • 同時に実行する • T1→T2、またはT2→T1の順に実行する この両者の結果が等しい時、直列可能であると呼
ぶ。
(c)長岡技術科学大学 電気系 7 ロック • アクセス対象となるデータを他のトランザクション からアクセスできなくすること • ロックの粒度 –
レコード、ページ、テーブル、データベースなど – 細かくロックすれば実行可能なトランザクションが増え る – 大きくロックすればロックの制御が容易になる
(c)長岡技術科学大学 電気系 8 ロックのタイプ • 共有ロック – 別名リードロック。データを読む前に実施。 – 他の共有ロックを許す(=読み込みを許す)
– 占有ロックは許さない(=書き込みさせない) • 占有ロック – 別名ライトロック。データを書く前に実施。 – 共有ロックを許さない(=読み込みを許さない) – 他の占有ロックを許さない(=書き込みさせない)
(c)長岡技術科学大学 電気系 9 2相ロックプロトコル • データ読み書きの前に、関係資源に対して一斉に ロックをして、 – 書き込みだけでなく、読み込みにもロックする •
操作がすべて終了後(コミットorロールバック後)に のみ、一斉にアンロックをする方式 – 1トランザクションでロックとアンロックは1回のみ。アン ロック後に何かをロックすることは許されない。 利点:直列可能性が保証される 欠点:デッドロックを防止できない
(c)長岡技術科学大学 電気系 10 デッドロック(dead lock) • 双方のトランザクションが他方に必要なデータを ロックして、それ以上処理が進まなくなること • 例:二つの預金口座AとBについて、
– AからBに振り込むためにAから出金 – BからAに振り込むためにBから出金 これを同時に行った場合、どちらの口座もロックが かかっているため書き込みができず、デッドロック 状態になる。
(c)長岡技術科学大学 電気系 11 デッドロックの防止 • データをロックする順序を決める。すべてのロック が完了するまでアンロックしない。 • 後述する時刻印アルゴリズムや楽観的排他制御を 使う
– 共にデッドロックは起こらない • トランザクション開始時に一括してロックする – つまり並列処理を一切しない
(c)長岡技術科学大学 電気系 12 デッドロックの検出と解除 • 検出 – タイムアウト:一定時間ロック待ちになっているトランザ クションを探し出す方法 –
待ちグラフ:相互依存関係を検出する方法 • 解除 – デッドロックを起こしているトランザクションの一つ(以 上)をアボート(中止)する
(c)長岡技術科学大学 電気系 13 時刻印(timestamp) • トランザクションの開始時刻を記録 • アクセスが競合した時は先に開始したトランザク ションを優先する方法 •
利点: – デッドロックが発生しない • 問題点: – 更新中のデータを他のトランザクションから参照 されてしまう
(c)長岡技術科学大学 電気系 14 楽観的排他制御 • 更新予定のデータに対する更新前の値を保持 • 更新時に、他のトランザクションがそのデータを更 新していないことを確認してからデータ更新 •
逆に更新されていたらロールバック • トランザクション間でアクセスの競合が少ない場合 を想定した方式 • デッドロックが発生しない
(c)長岡技術科学大学 電気系 15 隔離性水準(isolation level) 同時に実行される他のトランザクションからの影響を 受ける大きさで、下記4段階ある(干渉許容度が高 い順) ダーティー リード
ノンリピータ ブルリード ファントム リード read uncommitted 発生 発生 発生 read committed 発生 発生 repeatable read 発生 serializable
(c)長岡技術科学大学 電気系 16 serializable • 最も強力な隔離レベル • 複数のトランザクションをいくら実行させてもその影 響を受けない =
直列可能性(独立性)を保証 • ロック待ちが起きやすくなる
(c)長岡技術科学大学 電気系 17 repeatable read • 繰り返し同じデータを読み取っても、同じ内容であ ることを保証するレベル • 「ファントムリード」が発生する
– T1が問い合わせをした – その直後にT2が新商品の登録(コミット)をした – これによってT1の前回問い合わせ時に存在しないものが 出現する
(c)長岡技術科学大学 電気系 18 read committed • コミットされたもののみを読み取ることができるレベ ル • 他のトランザクションのコミット前のデータは読み取
れない • ファントムリードの他に、新たに「ノンリピータブル リード」が発生する – T1が在庫数の問い合わせをした – その直後に、T2が在庫数の更新をした – T1が同じ問い合わせをしても同じ結果が保証できない
(c)長岡技術科学大学 電気系 19 read uncommitted • 他のトランザクションのコミット前のデータも読み取 ることができるレベル • ファントムリード、ノンリピータブルリードの他に、新
たに「ダーティーリード」が発生する – T1がデータをAからBに更新したが、まだコミットしてい ない – T2が同じデータを問い合わせたので、未確定のデータ Bを戻した
(c)長岡技術科学大学 電気系 20 isolation levelとデッドロックの関係 • read uncommitted では、デッドロックはほとん ど発生しない
– ほとんど何もロックをかけないため • それ以外の3レベルではデッドロックが起こる