Firebird初心者講座:スイープ


firebirdの構造上、更新処理を行う度に更新前データがファイルに溜っていきます。
例えば、Delete文でデータを削除しても、Deleteで削除されたデータには
古いデータであることを示すフラグがつけられるだけで、ファイル内に残ります。

古いデータ(更新前データ)が溜らないようにするには、定期的にスイープ処理を行います。
スイープ処理を行うことによって、古いデータには削除フラグがつけられます。
削除フラグがつけられた古いデータの領域は、更新処理の上書き対象になります。
スイープ処理は更新処理が一定回数行われると自動で行われるようになっています。

しかし、運用上の理由から、短い間隔でスイープ処理の実行や
指定したタイミングで手動でスイープ処理を実行を行いたい場合があります。
本ページでは、自動スイープ処理の実行間隔の確認、変更および手動のスイープ処理を説明します。


自動スイープ処理の実行間隔確認・変更

  1. データベースに接続していない場合は、”isql”コマンドを使ってデータベースに接続します。
    ※接続方法は”データベース接続”ページを参照してください。

  2. 自動スイープ処理の実行間隔を”show database”で確認します。

    “Sweep interval”が自動スイープ処理の実行間隔です。
    更新処理が20000回行われるとスイープ処理が実行されるようになっています。

  3. データベースとの接続を切ります。

  4. “gfix”コマンドで自動スイープ処理の実行間隔を5000回に変更します。
    ※自動でスイープ処理を実行したくない場合は引数に”-h 0″と指定します。

  5. 1,2番の手順を行い、自動スイープ処理の実行間隔が更新処理5000回に
    変更されていることを確認します。


手動スイープ処理の実行

次のように”gfix”コマンドを実行するだけで手動スイープ処理を実行することができます。

  1. “gfix”コマンドでスイープ処理を実行します。

Firebird初心者講座 目次

Firebird関連書籍

  • Firebird徹底入門
    Firebirdをやるなら必須!インストールから実際の運用方法、便利なツール、各言語からの利用方法など幅広く紹介されています。
  • The Firebird Book~
    アーキテクチャについて書かれていますが洋書。詳しく知りたい方なら読んでおくべき。
  • オープンソースデータベースの導入と運用の実際
    少し古いですが基本は今も同じ。中古で安く買えます。
スポンサーリンク

コメント投稿は締め切りました。