DB

TRIGERで履歴テーブルの○○フラグを更新

履歴データを管理するテーブルでは最新のデータを特定する為に削除フラグや最新フラグなどを定義していることがあります。 データをINSERTして、その後で1世代前のデータのフラグをUPDATEする・・・という冗長な処理はTRIGERを使うことでINSERTのみで済ませ…

Oracle10gでのSQLPLUSの接続方法

Oracle10gからTNSNAMES.ORA ファイルを使用せずにSQLPLUSでDBに接続できるようになった。 sqlplus ${USERID}/${PASSWORD}@${HOSTNAME or IP_ADDRESS}:${PORT_NUMBER}/${SID}

PostgreSQLとMySQLの性能比較

「PostgreSQLは遅い」は本当か?:OSSデータベース比較 - ZDNet Japan

共有ロックと排他ロック

DB H2

H2では、共有ロック (shared locks) と排他ロック(exclusive locks)の2種類のロックが存在する。共有ロックは、SELECT で取得される。 排他ロックは、SELECT 〜 FOR UPDATE 、INSERT、UPDATE、DELETE などで取得される。 共有ロックが取得されている場合 SQL…

ロックタイムアウト

DB H2

JPAでロックの確認をしようとしたが、H2は1秒でロックタイムアウトするようデフォルト値が設定されている為、確認できない。 次のコマンドを実行し、5秒待つように変更した。 SET DEFAULT_LOCK_TIMEOUT 5000; DEFAULT_LOCK_TIMEOUT以外にLOCK_TIMEOUTもある…

ナチャラルキー(自然キー)とサロゲートキー(代替キー)

DB

テーブルの主キーを決める場合、ナチャラルキー(自然キー)とサロゲートキー(代替キー)というアプローチがある。ナチャラルキーとは、システムの外部から入力される社員番号のような業務上意味のあるキーであり、サロゲートキーとは、単にレコードをユニ…

H2にさわる

DB H2

H2 Database EngineはJavaで記述されたSQLデータベースエンジンで、 もともとHypersonic SQL(今のHSQLDB)の主要開発者である、Thomas Mueller氏によって開発された。 他のデータベースと比較すると、組み込み用途にもサーバ用途にも使うことができる上、フ…