排他制御、リカバリ処理、トランザクション管理、データベースの性能向上、データ制御についてまとめました。
【トランザクション処理とは】複数の処理をひとつにまとめたもの
トランザクションとは、「複数の処理をひとつにまとめたもの」のことです。
データベース処理などで複数の処理をバラバラに行うと、パフォーマンスが低下するため1つにまとめて行うことがあります。
トランザクション処理の開始から終了までに流れは以下のとおり。
順序 | 概要 |
---|---|
1 | トランザクション開始 |
2 | データベースから主記憶にデータを読み込む |
3 | 主記憶上のデータを更新 |
4 | コミット~(更新後ログが物理的記憶装置に書き込まれた後に)トランザクション終了 |
5 | 書出しのタイミング(チェックポイント)ごとに、主記憶上で更新されたデータをすべて補助記憶に書き込む |
【排他制御】
排他制御とは、あるトランザクションがアクセス中の資源に対して,他のトランザクションからアクセスできないようにすることです。
ある資源に対して専有ロックと専有ロックが競合し,片方のトランザクションが待ち状態になります。
それにより、あるトランザクションがアクセス中の資源に対しては、他のトランザクションからアクセスできないようにできます。
【デッドロック】
デッドロックとは、共有資源を使用する2つ以上のプロセス(トランザクション)が、互いに相手プロセスが必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態です。
デッドロックが発生するとプロセスは永遠に待ち状態になってしまうためプロセスの続行ができなくなってしまいます。
デッドロック対策
- 複数レコードを更新するときの順番を決め、全てのバッチ処理がこれに従って処理するように設計する。
【リカバリ処理】ロールバック
トラブル | リカバリ処理内容 |
---|---|
スナップショット | ある時点での読取り専用コピーをとる機能です。スナップショット時点まで復元したあとロールバック処理を行ってトランザクションの一貫性を確保する必要がある。 |
データベースの媒体障害 | バックアップ時点の状態に復元した後、ジャーナルファイルの更新後情報を使用してロールフォワード処理を行う。(※ロールバック処理に使うのはジャーナルファイルの更新前情報) |
トランザクション障害 | トランザクション障害が発生したときには、更新前ログを用いた「ロールバック」を行ってデータベースをトランザクション開始時点の状態に戻します(ロールフォワードは、コミット済トランザクションの更新後ログを用いてデータベースを障害発生直前の状態に復旧する処理です)。 |
デッドロック | デッドロックが発生するとトランザクションは永遠に待ち状態になってしまうため、処理の続行ができなくなってしまいまうので、DBMSが両方のトランザクションをアボート(中止)し、ロールバックします。 |
【トランザクション管理】ACID特性、
– | トランザクション管理 |
---|---|
トランザクションとは | システムにおける、永続的なデータに対する不可分な一連の処理です。つまり、複数の処理を1つにまとめたもので、これら「複数の処理」は分離させることができません。 |
ロック | リソース(表の行データなど)が他からアクセスできないようロックをかけることです。ロックの粒度とは、このロックをかける対象範囲です。この対象範囲には、「論理的な単位(データベース、表、行)」や「物理的な単位(ブロック、ページ)」があります。ロック粒度が細かいほどロックの競合が少ないため、同時実行可能なトランザクションが増えます。他のトランザクションにデータを更新されないようにするには、そのデータにロックを掛けます。 |
共有ロック | データを読込むときに使うロックで、資源がこの状態の場合は他のトランザクションによる更新処理ができなくなる。(読込みは可能) |
専有ロック | データを更新するときに使うロックで、資源がこの状態の場合は他のトランザクションによる読込みや更新ができなくなる。 |
ロールバック | トランザクションを「取り消す」処理で、やりかけの処理を中止して、やり始める前の状態に戻します。ロールバックは、主にトランザクション処理の途中で失敗したときに行います。 |
ロールフォワード | トランザクションを「やり直す」処理で、バックアップを適用した後で、バックアップ以降にやった処理を再現します。ロールフォワードは、データベースが物理的に壊れた場合になどに行います。 |
資源にかけられているロックが”共有”である場合のみ、別のトランザクションが新たに”共有ロック”をかけることができます。
ACID特性
データベースのトランザクション処理を行う場合、ACID特性と呼ばれる4つの特性をもつことが必要不可欠とされています。
ACID特性 | 性質 |
---|---|
原子性 | トランザクション内の処理がすべて実行されるか、または全く実行されないことを保証する性質(Atomicity)。 |
一貫性 | トランザクションにより常にデータベースの整合性が保たれている(データの矛盾が生じない)ことを保証する性質(Consistency)。 |
独立性 | 複数のトランザクションを同時に実行した場合と、順番に実行した場合の結果が等しくなることを保証する性質(Isolation)。 |
耐久性 | 正常終了したトランザクションの結果が、その後障害等が発生しても失われないことを保証する性質(Durability)。 |
【データベースの性能向上】
手法 | 性質 |
---|---|
再編成 | データベース中にレコードの追加や削除によって断片的な未使用領域が増加した場合や、繋がりのあるのレコードが非連続的な領域に格納され、順次アクセスの効率が低下した場合に行われる処理です。同じデータを連続した領域に配置するなど、データを適切に再配置することで、アクセス効率が向上し読書き速度の回復が望めます。 |
【データ制御】
【ファイル】
ファイル名 | 概要 |
---|---|
ダンプファイル | データベースの内容をそのまま書き出したファイル。データベース移行のときなどに使用。 |
チェックポイントファイル | コミットされたトランザクションをデータベースに書き出すときに、その情報を記録したファイル。 |
バックアップファイル | 媒体障害の発生に備えてデータベースのコピーを保存したファイル。 |
ログファイル | トランザクション開始前とコミット後の状態を保存したファイル。ロールバックやロールフォワードによって障害から復旧するときに使用し、データベースの永続性が保つことが可能。 |
【その他】インデックス
用語 | 概要 |
---|---|
インデックス | 索引(さくいん)とも呼ばれ、データベースへのアクセス効率を向上させるために、検索対象となるデータ項目に対して設定されます。データがどのレコードにあるかを示データベースのフルバックアップを磁気テープに取得する時間間隔を今までの2倍にする|・復旧時に行うログ情報の反映の平均処理時間が約2倍になる(バックアップの時間間隔が2倍になるだけなので、磁気テープ使用量やバックアップ取得時間は変化しない)。 |
![](https://algorithm.joho.info/wp-content/uploads/2023/08/404-160x90.jpg)
【情報処理入門】用語解説・資格試験対策まとめ
情報処理分野の用語・原理・資格試験対策について解説します。
コメント