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
2.9k
データベースと応用システム:トランザクション管理
自然言語処理研究室
June 20, 2014
Tweet
Share
More Decks by 自然言語処理研究室
See All by 自然言語処理研究室
データサイエンス14_システム.pdf
jnlp
0
330
データサイエンス13_解析.pdf
jnlp
0
380
データサイエンス12_分類.pdf
jnlp
0
290
データサイエンス11_前処理.pdf
jnlp
0
400
Recurrent neural network based language model
jnlp
0
100
自然言語処理研究室 研究概要(2012年)
jnlp
0
100
自然言語処理研究室 研究概要(2013年)
jnlp
0
69
自然言語処理研究室 研究概要(2014年)
jnlp
0
64
自然言語処理研究室 研究概要(2015年)
jnlp
0
120
Other Decks in Education
See All in Education
自由の森学園学校紹介資料
jiyunomori
0
1.4k
パフォーマンス・チューニング入門
oracle4engineer
PRO
2
540
わたしのメタ学習 / My Own Meta Learning #shinjukurb
expajp
0
110
Best Wedding day perfume
vicjon
0
260
Copilotとして理解する生成AI利用の基本
gmoriki
0
130
@ngrx/signals
yannickbaron
0
130
Dolce and Gabbana Light Blue Perfume
vicjon
0
390
全員参加型で会社を強くしていく活動を考えてみる
ikefukurou777
0
190
アプリ開発を目指した授業づくりについて
asial_corp
0
420
【滋賀大学データサイエンス学部】PropTech(不動産テック)における AI・データサイエンス活用
takehikohashimoto
0
4.1k
H5P-työkalut
matleenalaakso
3
32k
生成AIを活用できる大学教職員になる-基本と実践-
gmoriki
0
290
Featured
See All Featured
Six Lessons from altMBA
skipperchong
19
3k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
Build your cross-platform service in a week with App Engine
jlugia
224
17k
Happy Clients
brianwarren
91
6.4k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
219
21k
How GitHub (no longer) Works
holman
304
140k
It's Worth the Effort
3n
180
27k
Agile that works and the tools we love
rasmusluckow
323
20k
Product Roadmaps are Hard
iamctodd
43
9.7k
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レベルではデッドロックが起こる