情報処理技術者試験(データベーススペシャリスト)のキーワードメモ(五)

■2相ロック

あるトランザクションの全処理対象データを、トランザクション開始時にまとめてロックし、トランザクション終了直前にそのロックを開放する。これによりロックされたデータは、トランザクション処理中ではないデータもロックされてしまい他のトランザクションが処理できない。第1フェーズと第2フェーズがくっきりわかれているので、このような名前になっている。なお、2相ロック方式でも結局ロックを使っているため、この方式によりデッドロックの発生を防ぐということはできない。

・第1フェーズ(成長相)
ロックを掛けていくフェーズ。トランザクションの最初のロック命令から、最後のロック命令までの範囲 ・第2フェーズ(縮退相))
ロックをはずしていくフェーズ。トランザクションの最初のアンロック命令から、最後のアンロック命令までの範囲 判定方法:ロック範囲、アンロック範囲は交わっている部分がない

セーブポイントとチェックポイント

セーブポイント

トランザクション終了時にロールバックを実行すると、トランザクション実行前の状態に戻ってしまう。しかし全処理の取り消しではなく、トランザクションの途中の状態に戻りたい場合がある。そのような場合、セーブポイントを設定し、ロールバック時にその時点でのデータ状態に戻るようにすることができる。

・チェックポイント

システム障害発生後、障害からの回復処理を短縮するための手法。ある間隔でチェックポイントを設定して、そこでDBバッファ中の全データの書き出し、チェックポイントログのログファイルへの書き出しを行う。チェックポイントログレコードには、チェックポイント時点で実行中のトランザクションの一覧を記録しておく。チェックポイント設定間隔は、時間、一定トランザクション数、一定ログ量などによって定めることがある。

■2相コミット

2相コミットとは,同期点処理を資源の更新準備処理(プリペア処理)と,資源の更新処理(コミット処理またはロールバック処理)の二段階に分ける方法です。

第1相

ルートトランザクションブランチがグローバルトランザクション内のすべてのトランザクションブランチに,コミットの準備を要求します。トランザクションブランチは,コミットの準備が完了したか,ロールバックしたかを,ルートトランザクションブランチに報告します。

第2相

グローバルトランザクションロールバックする かコミットするか決定します。すべてのトランザクションブランチでコミットの準備が完了すると,ルートトランザクションブランチはグローバルトランザク ション全体のコミットを決定します。トランザクションブランチのどれかがロールバックしたときには,ルートトランザクションブランチはグローバルトランザ クション全体のロールバックを決定します。グローバルトランザクション内のトランザクションブランチはすべて,ルートトランザクションブランチでの決定に 従います。

セキュア状態

コミット準備要求に対し、コミット可能と応答したサイトを、セキュア状態であると呼ぶ。このとき、コミット最終指示か、またはロールバック要求かを待っている状態である。

ブロック状態

セキュア状態になったあと、通信障害などの要因によりトランザクションの処理をコミットすべきかロールバックすべきか判断つかない状態に陥ることがある。これをブロック状態とよぶ。

クラスタリング

複数のコンピュータを連結して、利用者から一台のコンピュータのように振舞う技術です。

■スライシング

多次元分析の方法の1つ。OLAPキューブの集計項目(ディメンション)を縦軸・横軸に指定して2次元の表を作成し、集計値を参照する操作のこと。

データ分析においてデータの切り口を変えることです。

■ダイジング

多次元分析の方法の1つ。OLAPキューブで集計項目(ディメンション)を縦軸・横軸に指定して2次元の表を作成する(スライシング)が、その軸を入れ替えて集計軸の異なるさまざまな表を表示する操作のこと。

データ分析において分析するためのデータの軸を変えることです。

SQL

 ・CASE式
二つ書き方があります。
1.単純CASE式

CASE sex
    WHEN '1' THEN '男'
    WHEN '2' THEN '女'
    ELSE 'その他'
END  

2.検索CASE式
CASE

    WHEN sex = '1' THEN '男'
    WHEN sex = '2' THEN '女'
    ELSE 'その他'

END

・NULLを置き換える
すべてDBMSCOALESCEをサポートしています。
COALESCE:引数の先頭から評価し、最初に出現したNULLでない値を返す
DBMSの独自な関数は下記で書かれています。

ORACLE

NVL:第一引数の値がNULLの場合、第二引数の値を返す

SQL Server

ISNULL:第一引数の値がNULLの場合、第二引数の値を返す

MySQL

IFNULL:第一引数の値がNULLの場合、第二引数の値を返す