無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 14 MySQL Cluster :: 14.4 MySQL Cluster の設定 :: 14.4.6 ローカル チェックポイントのパラメータの設定
« 14.4.5.3 SQL ノードおよび API ノード設定パラメータ

14.5 MySQL Cluster のアップグレードおよびダウンロード »
Section Navigation      [Toggle]
  • 14.4 MySQL Cluster の設定
  • 14.4.1 ソースコードによる MySQL Cluster の構築
  • 14.4.2 ソフトウェアのインストール
  • 14.4.3 MySQL Cluster の簡単なテストの設定
  • 14.4.4 設定ファイル
  • 14.4.5 クラスタ設定パラメータの概要
  • 14.4.6 ローカル チェックポイントのパラメータの設定

14.4.6. ローカル チェックポイントのパラメータの設定

MySQL Cluster のローカル チェックポイントの設定に使用される Logging and Checkpointing および Data Memory, Index Memory, and String Memory は分離しては存在しませんが、むしろお互い非常に依存しています。このセクションでは? DataMemory、IndexMemory、NoOfDiskPagesToDiskAfterRestartTUP、NoOfDiskPagesToDiskAfterRestartACC、および NoOfFragmentLogFiles ? を含むこれらのパラメータがどのように実際のクラスタでお互いに関連しているかについて説明します。

重要NoOfDiskPagesToDiskAfterRestartTUP および NoOfDiskPagesToDiskAfterRestartACC のパラメータは MySQL 5.1.6 では少なくなっています。MySQL 5.1.6 から 5.1.111 では、LCP の際のディスクの書き込みは可能な最高速度で行われます。MySQL 5.1.12 からは、LCP の速度およびスループットはパラメータ DiskSyncSize、DiskCheckpointSpeed、および DiskCheckpointSpeedInRestart を使用して管理しています。項14.4.4.5. 「Defining Data Nodes」 参照。

この例では、弊社のアプリケーションは以下のオペレーションの種類を毎時実行すると想定しています。

  • 50000 選択

  • 15000 挿入

  • 15000 更新

  • 15000 削除

弊社ではまたアプリケーションで使用されるデータについては以下想定しています。

  • 40 カラムを持つ1 つのテーブルを現在開発中です。

  • 各カラムは 32 バイトのデータを保持できます。

  • アプリケーションによる一般的な UPDATE の実行では 5 カラムの値に影響します。

  • アプリケーションでは NULL の値は挿入されません。

よい出発点はローカル チェックポイント (LCP) 間の経過時間を決定することです。システムの再起動時には何の価値もありませんが、REDO ログを実行するためにこのインターバルの 40-60 パーセントを使います。 ? 例えば、LCP 間の時間が 5 分 (300 秒) だとすると、REDO の読み込みに 2 ~ 3 分 (120 ~ 180 秒) かかります。

ノード毎の最大データ量は DataMemory パラメータのサイズによって想定できます。この例では、それは 2 GB と想定しています。NoOfDiskPagesToDiskAfterRestartTUP パラメータはユニット時間でのデータがチェックポイントされる量を表します。? しかし、このパラメータは実際は 100 ミリセカンドでチェックポイントされる 8K メモリのページ数で表されます。300 秒で 2 GB がおよそ 1 秒間に 6.8 MB、あるいは 100 ミリセカンドで 700 KB では 100 ミリセカンドでおよそ 85 ページです。

同様に、NoOfDiskPagesToDiskAfterRestartACC をインデックスに必要なローカルのチェックポイントに時間およびメモリの量で計算できます。? つまり、IndexMemory です。インデックスに 512 MB を用意すると、このパラメータに対しこれはおよそ 100 ミリセカンドで 20 8-KB ページになります。

次に、必要なREDO ログ ファイル数を決める必要があります。? つまり、フラグメント ログ ファイル? 相当するパラメータであるNoOfFragmentLogFiles。少なくとも 3 つのローカル チェックポイントの記録を維持できる十分な REDO ログ ファイルがあることを確認する必要があります。生産の設定では、常に不安定要素? 例えばディスクが常に最高速度あるいは最大のスループットで動作するのかわかりません。このため、最悪の状況をを想定しte仕様を強化し、6 つのローカル チェックポイントをカバーしたレコードを十分に維持できるフラグメント ログ ファイルを計算します。

ディスクが REDO ログ および UNDO ログへの書き込みもまた処理していることを忘れないことも大切です。ディスクに書き込まれているデータ量が NoOfDiskPagesToDiskAfterRestartACC および NoOfDiskPagesToDiskAfterRestartTUP の値で決められた量がディスクの利用できる帯域量に近づいたら、ローカル チェックポイント間の時間を長くしたくなるかもしれません。

ローカル ポイント毎に 5 分 (300 秒) とすると、書き込みログ レコードを最大速度 6 * 300 = 1800 秒でサポートする必要があります。REDO ログ レコードのサイズは 72 バイトに更新されカラム値毎に 4 バイト、それに更新されたカラムの最大サイズを加えると、それにトランザクションで更新された各テーブル レコードに 1 つの REDO ログ レコード、データが常駐する各ノードにあります。このセクションで以前設定したオペレーション数を使用すると、以下が得られます。

  • 毎時 50000 選択オペレーションで 0 のログ レコード (よって 0 バイト) ですので、SELECT ステートメントは REDO ログには記録されません。

  • 毎時 15000 DELETE ステートメントはおよそ 毎秒 5 削除オペレーションです。(見積もりにおいては控えめにしたいので、ここでまとめると、以下の計算になります。)カラムが削除によって更新されませんので、これらのステートメントはオペレーションごとに 5 オペレーション * 72 バイト = 毎秒 360 バイトになります。

  • 毎時 15000 UPDATE ステートメントはおよそ毎秒 5 回の更新に相当します。各更新に 72 バイト、それにカラム毎に 4バイト * 5 カラムの更新、さらにカラム毎に 32 バイト * 5 カラム? つまりオペレーション毎に 72 + 20 + 160 = 252 バイトになります。これを毎秒 5 オペレーションを乗算すると毎秒 1260 バイトになります。

  • 毎秒 15000 INSERT ステートメントは毎秒 5 挿入オペレーションに相当します。各挿入は REDO ログ スペース 72 バイトが必要で、それに レコード * 40 カラム毎に 4 バイト、およびカラム * 40 カラム毎に 32 バイトで 72 + 160 + 1280 = 1512 バイト/オペレーションになります。これに 5 オペレーション/秒で 7560 バイト/秒になります。

ですから 1 秒に書き込まれる REDO ログの合計はおよそ 0 + 360 + 1260 + 7560 = 9180 バイトになります。これを 1800 秒で換算すると 16524000 バイトが REDO ロギングに必要になります。およそ 15.75 MB です。NoOfFragmentLogFiles に使用される単位は 4 16-MB ログ ファイル? つまり、64 MB になります。このように、パラメータの最小値 (3) はこの例で示したシナリオに十分で、ですから 64 の 3 倍 = 192 MB、あるいは 12 倍が要求された場合、デフォルトの 8 (あるいは 512 MB) はこのケースでは必要を満たすに十分です。

変更したテーブルのレコードのコピーは UNDO ログにあります。上記で説明したシナリオでは、UNDO ログはデフォルトの設定で提供された以上のスペースは必要ありません。しかしながら、ディスクのサイズの場合には少なくとも 1 GB 割り当てるのが賢明です。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.