InterBase 2009 のパフォーマンスと信頼性を向上させる

By: Tomohiro Takahashi

Abstract: この記事では、InterBase 2009 でRAMキャッシュを増やしてデータベースのパフォーマンスを向上させる簡単な方法を紹介します。

Embarcadero Developer Network内で最も負荷の大きいデータベースはCodeCentral用のデータベースで、現在のサイズは約37GBです。(もっと巨大なデータベースも稼動していますが、あまり負荷は大きくありません) CodeCentralの登録ユーザーは350万人以上で、稼動開始から1300万回以上のダウンロードがありました(ユーザーごとのユニークなダウンロード数で、再カウントはありません)。最近の365日間をみても150万回以上のユニークなダウンロードがありました。

Sriram Balasubramanianから「InterBase 2009 Update 3は、64bitOS上で動作しているデータベース用のRAMキャッシュを大幅に増やすことができる」と連絡があり、試さずにはいられませんでした。この記事を読んでいただければ、あなたもきっと同じ気持ちを抱くはずです。

    InterBase 2007 を InterBase 2009 に移行する

何週間か前に、重要なInterBaseサーバー用マシン上(4つのInterBaseインスタンスが稼動中)で稼動している InterBase 2007 のインスタンスを InterBase 2009 Update 3 に置き換えました。それに先立って、テスト用のWindows Server 2008マシン上で、CodeCentralのバックアップデータベース使用して新しいInterBaseサーバーをテストし、正常に動作することを確認していました。

現在、CodeCentral用のデータベースキャッシュに 2.8GB のRAMを割り当てており、快適に稼動しています。RAMキャッシュを追加したところ明らかなパフォーマンスの向上が確認できました(申し訳ありませんが、具体的な数値は持っていません)。また、64bitOS上で動作させているInterBaseにも問題は発生していません。

以下は、本番環境のサーバー上で行った手順です。

  1. Windows Server 2003(64bit版)上の4つのインスタンスのうちの1つ(CodeCentral用のインスタンスまたはgds_cc)について、InterBase 2007 をアンインストールします
  2. InterBase 2009 Update 3 をインストールして、ライセンスをアクティベートします
  3. データベースのページバッファのサイズをRAMの上限まで引き上げます

この3つの手順は全部で10分以下で終わるはずです。

    ページバッファを変更する

ページバッファを変更するには、gfix または IBConsole が利用可能です。

gfix の場合は、コマンドラインで以下の例のようなコマンドを実行することになると思います。

gfix localhost/gds_cc:d:\ibdata\gds_cc\CODECENTRAL.IB -buffers 350000 -user sysdba -password masterkey 

正しいInterBaseのインスタンスに接続していることを確認するために、"localhost/gds_cc" を使用しました。350000 というバッファの値は、InterBase 2007 には大き過ぎるためです。

次のスクリーンショットは、IBConsoleでの設定方法を示したものです。

Hide image
Click to see full-sized image

IBConsoleでページバッファを変更する

データベースが再度オープンされる(最初のユーザーがデータベースにアクセスする)際にページバッファの変更が有効になり、より多くのRAMを利用できるようになります。

    手間要らずで簡単です

InterBase 2007 を InterBase 2009 Update 3 に置き換えるのは手間要らずで簡単ですし、すぐにパフォーマンスを改善できます。(しかも、その他の改善点については言及していません!)

InterBase 2009 Update 3 のメリット:

  • InterBase 2009 Update 3 は快適に動作します!
  • InterBase 2007 を InterBase 2009 Update 3 に置き換えて、特定のデータベースにキャッシュ用の追加のRAMを割り当てるように変更する作業は、ダウンタイムがほとんど無く迅速に行えました
  • 巨大なデータベースをより高速に動作させることができます(より小さなデータベースであれば、すべてRAMキャッシュに乗ってしまうので極めて高速になるでしょう)
  • 同一サーバー上で、InterBase 2007 のインスタンスと共存できる
  • 既存のInterBaseクライアントを更新することなく稼動させることができる
  • ほとんど手間をかけずに大きなパフォーマンス効果を得られる

Server Response from: ETNASC03