タグ

ブックマーク / jflute.hatenadiary.jp (3)

  • 論理削除がデータを汚している - jfluteの日記

    ベクトルの違うデータ まあ、それは事実。 ただ、履歴をそのまま残したいということも事実。 いちいち削除履歴テーブルなんて作ってられないのも事実。 ※ここでの論理削除は、復活する論理削除じゃなく、物理削除の代わりとして履歴のための論理削除を指します。(復活する論理削除って、そもそも削除とは言えないって気も...) 来、論理削除されたデータって... そのテーブルの定義するデータとはベクトルの違うデータ である考えます。 でも、わざわざ削除されたデータを保持するテーブルを作ると、それはそれで面倒なのでそのまま同じテーブルに持ったままにする。その方が扱いが簡単なことが多いから。削除フラグを true にするだけで済むから。 個人的には、業務上重要なテーブルに関しては、しっかりと「削除履歴テーブル」を用意して、体のテーブルには常に有効なデータだけがある状態の方が、データメンテもプログラムも遥か

    論理削除がデータを汚している - jfluteの日記
  • ClubDB2、SQLパフォーマンス改善にいってきた - jfluteの日記

    「第152回 実例から学ぶ! DB2のSQLパフォーマンス改善」 MacBookDB2で試しながらと思ったけど、 db2expllnコマンドの引数指定がやたらめったら 多くていきなり挫折... db2exfmtコマンドの方を試してみよう。 どのみちこっちの方が細かく実行計画が見られるみたい。 まずは EXPLAIN のためのテーブルを作成する。 $HOME/sqllib/misc/EXPLAIN.DDLにCREATE文がある。 とりあえず MacBookDB2 で以下のコマンドを実行。 $ db2 -tf EXPLAIN.DDL The SQL command completed successfully. が大量に表示されて、なんとなく成功したかな。 OSユーザーが既にDB2管理者なのでこの辺はさすが簡単ですね。 続けてコマンドラインで、SQLの実行計画を収集。 $ db2 se

    ClubDB2、SQLパフォーマンス改善にいってきた - jfluteの日記
  • MySQLでお手軽デッドロック - jfluteの日記

    -- MEMBER_SEA は MEMBER の 1:n の子テーブル delete from MEMBER_SEA where MEMBER_ID = 3 insert into MEMBER_SEA ...(MEMBER_ID は 3) ん? 最初のdeleteが互いに「0件削除」だとデッドロック。別トランザクションのMEMBER_IDが別ID(例えば4)でもデッドロック。(とにかく両方のトランザクションでdeleteが0件であれば) これは... ネクストキーロックって? MySQLのInnoDBには「ネクストキーロック」という機構があります。 詳しくは、ぐぐってくれればOKですが、ひとまず参考になるオフィシャルサイトのページを。 => ネクスト キー ロック:ファントムの問題を防ぐ 難しいこと書いてありますねぇ。 「ギャップ」って何!? ここでいうインデックスレコードって!? とに

    MySQLでお手軽デッドロック - jfluteの日記
  • 1