• 検索結果がありません。

失敗

ドキュメント内 D1印刷用.PDF (ページ 57-68)

? トランザクションとは

コミットとコミットの間に起こるデータベース へのすべての変更。

? コミットとは

トランザクションで実行した変更をすべて 確定すること。

? ロールバックとは

トランザクションで実行した変更をすべて 取り消すこと。

トランザクション管理

コミット

コミット

INSERT

INSERT UPDATE

DELETE

ロールバック トランザクシ

トランザクション

Oracle --- コミットしてからコミットするまで、明示的に トランザクションが終了させる必要がある。

トランザクション管理

?

トランザクション管理が必要

両方の処理が成功したら書き込む(Commit)

どちらか失敗したら元に戻す(Rollback)

?OraSession

単位、

OraDatabase

単位で実行

OraSession.BeginTrans

トランザクション開始

OraSession.CommitTrans

書き込み

OraSession.Rollback

元に戻す

トランザクション管理

OraSession.BeginTrans

OraDatabase.ExecuteSQL _

("Update 口座 Set 残高 = 残高 - 500 Where 口座番号 = 1") OraDatabase.ExecuteSQL _

("Update 口座 Set 残高 = 残高 + 500 Where 口座番号 = 2") OraSession.CommitTrans

Exit Sub ErrHandler:

OraSession.Rollback

? 他のユーザが更新中のデータに対して、別のユーザの 更新を防ぐための排他制御が ロック です。

? 一般的なロックのレベル(単位)

ページ

? ロックの単位が大きくなると、他のデータにも不要なロックがか かり、ロック解除待ちが多発するためOLTPシステムにおける処 理効率が大幅に低下します。

ページ

Oracle の優位点

行レベルロック --同時実行性

--? 他社製RDBMSの行レベル・ロックは、行数に応じて

勝手に ページ・レベル、表レベルへとエスカレートしてし まいます。

Update EMP set ….

where age = 30;

Update EMP set ….

where age > 29 and age < 40;

Update EMP set ….

where age < 30;

行レベル ページ・レベル 表レベル

ロック・レベル:

同時性:

Oracle の優位点

行レベルロック --同時実行性

--? オラクルでは、Oracle Ver.6 以前から完全な行レベル・ロ ックをサポートしています。

? ロック・エントリをメモリで管理するのではなく、データの属 性として保持するため、エスカレーションの発生しない 無 制限の 行レベル・ロックを実現しています。

? エスカレーションの制御によるオーバーヘッドが無いため

、ヘビ−なOLTP環境での排他制御も効率的に処理可能 です。

Oracle の優位点

行レベルロック --同時実行性

--? 別のユーザが更新途中のデータを参照しようとした場合 でも、一貫性のあるデータ(コミットされたデータ)を参照 できることが保証されることです。

¥12000

¥20000

Update

Select

¥12000

Commit

or

Rollback

or ¥12000

¥20000

Oracle の優位点

行レベルロック --競合しない読み取り一貫性

--分離レベル ダーティリード ファジーリード 仮読取り READ UNCOMMITTED(非コミット読取り)

READ COMMITTED(コミット読取り)

REPEATABLE READ(繰返し可能読取り)

SERIALIZABLE(直列可能)

? ダーティリード

トランザクションは、あるトランザクションによって書き込まれたまだコミットされていないデータ を読み込みます。

? ファジーリード

トランザクションはすでに読み取ったデータをもう一度読み取って、他のコミット済みトラ ンザクションがそのデータを変更または削除したかどうか調べます。

? 仮読取り

トランザクションは問合せを再実行して、検索条件に適合する行一式を返して、別のコミ ット済みトランザクションが条件に適合する追加の行を挿入したかどうかを調べます。

Oracle の優位点

行レベルロック --競合しない読み取り一貫性

--スループットが低下 !!

?

他社製

RDBMS

の場合...

¥1200 0

¥2000

0 Select

Commit

or

Rollback

Update

Read Committedモード

¥12000

¥20000

Select

Rollback Update

¥20000

¥12000

Dirty Readモード

データに一貫性が無い !!

Oracle の優位点

行レベルロック --競合しない読み取り一貫性

--? オラクル独自のマルチバージョニング機構による読取り 一貫性保証。ユーザは常に一貫性のあるデータを、待 ち時間無しで参照できます。

Copy

Update

Update

Copy Copy

Update

REDOバッファ

テーブル

Oracle の優位点

行レベルロック --競合しない読み取り一貫性

ドキュメント内 D1印刷用.PDF (ページ 57-68)

関連したドキュメント