naobe @ ウィキ

RDB共通

最終更新:

naobe

- view
管理者のみ編集可

RDBに戻る

ER図

http://7ujm.net/SQL/ER.html より

#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (ER図.png)

シノニム

テーブルに対する別名のこと。他のユーザが所有している(他のユーザのスキーマである)テーブルに対して、自分のスキーマの別名を作成することで、スキーマ指定せずともアクセス可能になる。

【例】

 GRANT SELECT ON ADMIN.TEST_TABLE TO WORKER ;
 CREATE SYNONYM WORKER.TEST_TABLE_ALIAS FOR ADMIN.TEST_TABLE  ;

char型とvarchar型について

http://tridentfield.x0.com/blog/?p=24 より

char 型のカラムに指定サイズに満たないデータを入れた場合、不足バイト分のスペースで埋められる。たとえば、8 バイトの char 型のカラムに「test」という文字を挿入すると、データベースには「test____」(_はスペース)というデータで格納される。 char 型のカラムはデータ挿入時に指定サイズ分が記憶領域に確保されるが、varchar 型のカラムでは必要な分のみ確保される。 varchar 型のカラムのデータを格納されているデータより大きなサイズのデータに更新しようとしたときに、再度記憶領域のサイズを確保する処理が行われる事がある。 パフォーマンスに敏感になっている DB アドミニストレータからしてみると、この些細な点でも気になることだろう。

チェックポイント

http://www.netlaputa.ne.jp/~hijk/study/ae/warmstart.html 参照

commitを実行して確定したRDBのデータが、ディスクに書かれるタイミング。周期的に発生する場合と、メモリバッファが一杯になった場合がある。 チェックポイント時点ではそのときのDBの内容と、トランザクションのログが残っている。両者からロールバック、ロールフォワードによってDBの内容をできるだけ復元する。

アイソレーションレベル

アイソレーションレベル DB2 説明 ダーティリード ノンリピータブルリード ファントムリード
READ_UNCOMITTED UR(Uncomitted Read) コミットしていない行を読める × × ×
READ_COMITTED CS(Cursor Stability) コミットした後のみ読める。他のトランザクションが複数の行をUPDATE中にREADしたときに途中の行までがUPDATEした状態を読み込む(ダーティリード)のを防ぐ。 × ×
REPEATABLE_READ RS(Read Stability) 繰り返して同じ行をREADしても整合性を失わない。1回目のREADと2回目のREADの間に他のトランザクションが該当行をUPDATEした場合に違う値を読み込む(ノンリピータブルリード)のを防ぐ。トランザクションの期間中、SELECTした行をロックする。 ×
SERIALIZABLE RR(Repeatable Read) 直列を保障する。トランザクションの期間中、テーブル全体をロックする。同じSELECT文を2回発行すると仮定する。SELECTしたのちに他のトランザクションがinsertを行い、次のSELECTでinsertされた行を読み込む(ファントムリード)のを防ぐ

DB2のCSでの例

DB2はデフォルトでは分離レベルはCSになる

端末1でVWAM07のstorenum=st002のtypeは2

端末1でVWAM07のstorenum=st002のtypeを5 にupdate

端末1でselectすると、typeは5に変わる。

端末2でselectすると、typeは2のまま。commitしていないため、dirty readを防いでいる。 select * from VWAM07 with urを実行すると、typeは5になる。

端末1でcommitを実行

端末2でselectするとtypeは5に変わる。

楽観的ロック

正規系

http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html から抜粋

第1正規系

関係から以下の操作をすることで得られる。

  • キーを設定
  • 繰り返しグループを別テーブルに
  • 導出項目を削除

下図の非正規系の注文番号をキーに、商品IDから数量を別テーブル(注文明細)にする。

第2正規系

  • 第1正規系から部分関数従属性を取り除くことで得られる

注)

関数従属性 ある属性Aの値が決まるとき、属性Bが一意に決まること。A --> B と表記する。下図の第1正規系では、注文明細の商品IDが決まれば、商品名、フォーマット、単価が一意に決まる。
部分関数従属性 部分関数従属性とは、キーの一部に非キー属性(キー以外の属性)が関数従属している状態のことをいう

第3正規系

  • 第2正規形から推移関数従属性を取り除くことで得られる

注)推移関数従属性とは、Aが決まるとBが決まり、その結果Cが決まるという関係で「A→B→C」(ただしB→Aは不成立)と表記する。B→Cは非キーから非キーへの推移。下図の第2正規系では、顧客IDと名前~電話番号にあたる。

【正規系の推移】

ウィキ募集バナー