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
350
データサイエンス13_解析.pdf
jnlp
0
410
データサイエンス12_分類.pdf
jnlp
0
310
データサイエンス11_前処理.pdf
jnlp
0
430
Recurrent neural network based language model
jnlp
0
110
自然言語処理研究室 研究概要(2012年)
jnlp
0
110
自然言語処理研究室 研究概要(2013年)
jnlp
0
76
自然言語処理研究室 研究概要(2014年)
jnlp
0
89
自然言語処理研究室 研究概要(2015年)
jnlp
0
140
Other Decks in Education
See All in Education
Adobe Analytics入門講座【株式会社ニジボックス】
nbkouhou
0
19k
技術を楽しもう/enjoy_engineering
studio_graph
1
420
1030
cbtlibrary
0
300
Chapitre_1_-__L_atmosphère_et_la_vie_-_Partie_1.pdf
bernhardsvt
0
220
セキュリティ・キャンプ全国大会2024 S17 探査機自作ゼミ 事前学習・当日資料
sksat
3
850
勉強する必要ある?
mineo_matsuya
2
1.6k
PSYC-560 R and R Studio Setup
jdbedics
0
520
HCI Research Methods - Lecture 7 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
710
CompTIA Security+ SY0-601 Resumo
mariliarochas
2
2.6k
Medidas en informática
irocho
0
300
Library Prefects 2024-2025
cbtlibrary
0
110
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
2.7k
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
A Modern Web Designer's Workflow
chriscoyier
693
190k
Embracing the Ebb and Flow
colly
84
4.5k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Bash Introduction
62gerente
608
210k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Designing for humans not robots
tammielis
250
25k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Rails Girls Zürich Keynote
gr2m
94
13k
Music & Morning Musume
bryan
46
6.2k
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レベルではデッドロックが起こる