Advanced Operations Guide (v11)

パフォーマンスの分析

Pervasive PSQL Server の Windows 版では Windows パフォーマンス モニターで使用するパフォーマンス カウンターを提供します。Pervasive PSQL のパフォーマンス カウンターがサポートされるのは、Windows Vista 以上の Windows オペレーティング システムのみです。パフォーマンス カウンターはデータベース エンジンの状態や動作を測定します。これによりアプリケーションのパフォーマンスを分析することができます。Windows パフォーマンス モニターは、指定の時間間隔でパフォーマンス カウンターの現在の値を要求します。

Pervasive PSQL は、パフォーマンス モニターで表示するためだけにデータを提供しており、カウンターのプロパティは変更できません。パフォーマンス モニターは以下のアイテムを制御します。

カウンターの値は、呼び出し元を問わず、データベース エンジンへのすべての呼び出しを反映します。つまり、トランザクショナル インターフェイス、リレーショナル インターフェイス、ネイティブな Btrieve アプリケーション、ユーティリティなど、すべてがカウンターの値の一因となります。カウンターの値はすべてのファイルを対象に収集されます。ファイルごとのカウンターは現在サポートされていません。

パフォーマンス カウンターの使用は、主にアプリケーション開発者およびその他の技術スタッフ向けの高度な機能です。Windows パフォーマンス モニターおよび一般的なカウンターの使用の詳細については、Microsoft の関連ドキュメントを参照してください。

インストール時の登録

デフォルトで、Pervasive PSQL のインストールでは Pervasive PSQL パフォーマンス カウンターをパフォーマンス モニターに登録します。このカウンターはインストール完了後に使用できるようになります。

お客様のニーズへの対応のため、本章で説明されていない Pervasive PSQL コレクター セットまたはカウンターを追加インストールすることになる可能性もあります。そのような場合は、Windows パフォーマンス モニターで提供されるコレクター セットまたはカウンターの説明を参照してください。カウンター セットまたは個別のカウンターをモニターへ追加するを参照してください。

データ コレクター セット

データ コレクター セットは、複数のカウンターを 1 つのコンポーネントにまとめています。このコンポーネントを使用してパフォーマンスを再確認したり記録したりすることができます。 Pervasive PSQL では以下のデータ コレクター セットを提供します。

Pervasive PSQL MicroKernel Btrieve Operations

これらのカウンターは、トランザクショナル(Btrieve)インターフェイスに関するクライアント アプリケーションの動作の特徴を示すために役立ちます。カウンターは、指定した時点にデータベース エンジンで処理されたオペレーションの種類を報告します。

Btrieve API Guide』の「Btrieve API オペレーション」も参照してください。

表 15 MicroKernel Btrieve オペレーション用のカウンター
カウンター
説明
典型的な使用法
Btrieve Close Operations/sec
1 秒あたりの Btrieve Close オペレーション数。
クライアント アプリケーションの動作を調査します。問題を解決する最初のステップとして、Btrieve オペレーションに関するアプリケーション動作の分析に役立つ可能性があります。
Btrieve Get/Step Operations/sec
1 秒あたりの Btrieve Get および Step オペレーション数。
各種 Get および Step オペレーションについては、『Btrieve API Guide』の 「Btrieve API オペレーション」を参照してください。
Btrieve Open Operations/sec
1 秒あたりの Btrieve Open オペレーション数。
Btrieve Records Deleted/sec
1 秒あたりの Btrieve レコード削除数。
Btrieve Records Inserted/sec
1 秒あたりの Btrieve レコード挿入数。
Btrieve Records Updated/sec
1 秒あたりの Btrieve レコード アップデート数。
Change Operations/sec
1 秒あたりのデータ ファイルを変更する Btrieve オペレーション数。
Operations/sec
1 秒あたりのオペレーション数。
Page Server Requests/sec
1 秒あたりのリモート キャッシュエンジンからのページリクエスト数。

Pervasive PSQL MicroKernel Cache

データベース エンジンは 2 つのレベルのメモリ キャッシュ システムを使用してデータ操作のパフォーマンスを向上させます。2 つのキャッシュは「L1(レベル 1)キャッシュ」と「L2(レベル 2)キャッシュ」と呼ばれます。

ユーザーの要求に応じエンジンがディスクからページを読み取る頻度が高くなるほど、パフォーマンスは低下します。これらのカウンターを使用すると、データベース エンジンによるディスク読み込みの回避状況をまとめて表示し、キャッシュ サイズの設定に対してなんらかの変更が必要かどうかを判断することができます。

すべてのデータが L1 キャッシュに格納された場合は最高のパフォーマンスが得られます。ただし、データ ファイルのサイズによっては、L1 キャッシュにすべてのデータ ページを保持できないこともあります。このため、データベース エンジンは第 2 レベルのキャッシュ(L2 キャッシュ)も使用します。L2 キャッシュのページは圧縮形式で格納されるため、より多くのページをメモリに入れることができます。そのため、L1 キャッシュよりもパフォーマンスは低下しますが、データベース エンジンがディスクからページを読み込む状況と比べればパフォーマンスは高くなります。

データベースのメモリ キャッシュの理想的なサイズを計算するにはも参照してください。

表 16 MicroKernel キャッシュ用のカウンター
カウンター
説明
典型的な使用法
Level 1 Cache Dirty Percentage
ダーティ ページを含む使用中の L1 キャッシュの割合 (%)。
頻繁にアクセスされるページが継続的にキャッシュの外へ出されるかどうかを判断するのに役立ちます。そのようなページが継続的にキャッシュの外へ出されるとパフォーマンスが低下する可能性があります。
ディスクへ書き込まれていない変更を含むダーティ ページは、L1 キャッシュに存在しているだけかもしれません。大量に書き込みが行われる状況下では、L1 キャッシュにダーティ ページが含まれる可能性が高くなります。これによってページが強制的に L1 キャッシュから出され、L2 キャッシュを設定していれば L2 キャッシュへ入れられます。L2 キャッシュを設定していなければ L1 キャッシュの外へ完全に出されてしまいます。
データベース エンジンは、指定した間隔で、または L1 キャッシュがほぼいっぱいになったときにダーティ ページをディスクへ書き込みます。ページが頻繁にディスクへ書き込まれると、パフォーマンスに悪影響を及ぼす可能性があります。
L1 キャッシュのサイズを調整してダーティ ページの割合が高くならないようにすれば、パフォーマンスを向上させることができます。「キャッシュ割当サイズ」も参照してください。
Level 1 Cache Hits/sec
1 秒あたりの L1 キャッシュ ヒット数。
データベース エンジンが、要求されたページを L1 キャッシュで見つけることができたかどうかを判断するのに役立ちます。ヒット率が高くなると、データベース エンジンが L2 キャッシュまたは物理記憶域へアクセスすることなく L1 キャッシュでページを見つけていることを示します。
Level 1 Cache Hit Ratio
L1 キャッシュ アクセスのヒット率 (%) 。
MicroKernel が有効である間だけ割合が表示されます。
Level 1 Cache Misses/sec
1 秒あたりの L1 キャッシュ失敗数。
Level 1 Cache Usage
現在使用中の L1 キャッシュの割合 (%)。
L1 キャッシュのサイズをアプリケーションに応じて調整する場合に役立ちます。たとえば、サイズが小さなデータ ファイルまたは主に読み取り専用のデータ ファイルを使用するアプリケーションの場合、デフォルトで設定された L1 キャッシュはそのデータ ファイルだけではいっぱいにならないかもしれません。L1 でメモリが使用されなくても、オペレーティング システムまたはその他のアプリケーションがその未使用分のメモリを使用することはできません。
L1 キャッシュ サイズを適宜変更すれば、メモリをオペレーティング システムへ解放することができます。逆に、データベース全体をメモリに入れておきたい場合は、L1 キャッシュ サイズの設定が妥当かどうかを知るためにこの値を監視することができます。
Level 2 Cache Hits/sec
2 秒あたりの L1 キャッシュ ヒット数。
データベース エンジンが、要求されたページを L2 キャッシュで見つけることができたかどうかを判断するのに役立ちます。ヒット率が高くなると、データベース エンジンが物理記憶域へアクセスすることなく L2 キャッシュでページを見つけていることを示します。
Level 2 Cache Hit Ratio
L2 キャッシュ アクセスのヒット率 (%) 。
MicroKernel が有効である間だけ割合が表示されます。
Level 2 Cache Misses/sec
1 秒あたりの L2 キャッシュ失敗数。
Level 2 Cache Raw Size
L2 キャッシュの現在のサイズ (バイト)。
任意指定の L2 キャッシュ サイズを決定するために役立ちます。
L2 キャッシュは 「MicroKernel の最大メモリ使用量」用に設定される要素の 1 つです。その設定は、総物理メモリに対してデータベース エンジンが消費できるメモリの割合を指定します。これには、データベース エンジンによる、L1 キャッシュ、L2 キャッシュおよびその他すべてのメモリの使用量が含まれます
「MicroKernel の最大メモリ使用量」の設定が 0 以外の場合、L2 キャッシュのサイズはその設定によるメモリ制限内に収まります。L2 キャッシュはシステムのメモリ消費を監視し、必要に応じて自身のサイズを変更します。L2 キャッシュによって使用されるメモリは、オペレーティング システムによってスワップ アウトされることもあります。
Level 2 Cache Raw Usage
現在使用中の L2 キャッシュの量 (バイト)。
Level 2 Cache Size Relative to Memory
物理メモリに対する L2 キャッシュ サイズの割合 (%)。
システム メモリに対する L2 キャッシュの使用割合を示します。
Level 2 Cache Usage
現在使用中の L2 キャッシュの割合 (%)。
現時点における L2 キャッシュの使用割合を示します。

Pervasive PSQL MicroKernel I/O

このセットのカウンターは、データベース エンジンによる、物理記憶域へのデータの読み取りおよび書き込み状況を把握するのに役立ちます。カウンターによって報告されるページとはデータ ファイル ページです。これらのカウンターでは、アーカイブ ログまたはトランザクション ログ向けに使用されるファイルのページ用のデータは報告しません。

Pervasive PSQL Programmer's Guide』の「ページ」も参照してください。

表 17 MicroKernel 入力/出力用のカウンター
カウンター
説明
典型的な使用法
Pages Read/sec
1 秒あたりのディスクからの読み取りページ数。
データベース エンジンによる、物理記憶域へのデータの読み取りおよび書き込み状況を測定します。
Pages Written/sec
1 秒あたりのディスクへの書き込みページ数。

Pervasive PSQL MicroKernel Locks and Waits

クライアントの要求は、リソースが使用可能になるのを待つため遅延することがあります。これらのカウンターを使用すれば、リソースが使用可能になるまでクライアント要求を待つ必要があるデータベース リソースのタイプを特定することができます。同様に、これらのカウンターでは複数のクライアントがリソースへアクセスしたときのデータベース エンジンの動作を観察することができます。値がクライアント数に近いまたは等しい場合は、同じリソースに対して競合している可能性があることを示しています。これらの競合を低減するための是正措置を行えば、反応性を改善することができます。

Waits on Page Buffers および Waits on Page Reads カウンターはグローバル リソースを待機します。その他のカウンターはすべて複数のクライアントに適用しますが、各クライアントはそれぞれ異なるリソースを待機している場合があります。

Pervasive PSQL Programmer's Guide』の「データの整合性」および複数のクライアントのサポートを参照してください。

表 18 MicroKernel ロックおよび待機用のカウンター
カウンター
説明
典型的な使用法
Client Record Locks
クライアントによって明示的にロックされたレコード数。
クライアント アプリケーションの作業負荷を調査します。
Waits on Active Reader Lock
アクティブなリーダー ロックを待機中のクライアント数。複数のクライアントが同時にアクティブなリーダー ロックを保持できます。ただし、アクティブなリーダー ロックとアクティブなライタ ロックは排他的に使用されます。そのため、1 つのクライアントがアクティブなリーダー ロックを保持すると、どのクライアントもアクティブなライタ ロックを取得することはできません。1 つのクライアントがアクティブなライタ ロックを保持すると、複数のクライアントがアクティブなリーダー ロックを取得することはできません。各ファイルがそれ自身のリーダー(およびライタ)ロックを持っています。
Waits on Active Writer Lock カウンターも参照してください。
Waits on Active Writer Lock
アクティブなライタ ロックを待機中のクライアント数。一度に 1 つのクライアントだけがアクティブなライタ ロックを保持できます。各ファイルがそれ自身のライタ(およびリーダー)ロックを保持します。
Waits on Active Reader Lock カウンターも参照してください。
Waits on File Locks
現在ファイル ロックで待機中のクライアント数。
Waits on Page Buffers
ページ バッファーが利用可能になるのを待機中のクライアント数。もしページがリクエストに応じるためにアクセス可能でない場合は、リクエストは MicroKernel が 1 ページを提供することが可能になるまでブロックします。
データベース エンジンが、キャッシュのページ バッファーを使用できるかどうかを示します。この値をメモリ キャッシ関連のカウンターと一緒に使用して、キャッシュのサイズが作業負荷に対して適切かどうかを確認します。キャッシュ サイズを大きくすると使用可能な総ページ数も増えます。これにより、ページ バッファーへの待機を減らすことができます。
キャッシュにページがない場合は、以下の 3 つ状況によってこの値が急増する可能性があります。
  • データ ファイルが最近開かれた
  • データ ページへ初めてアクセスする、またはそのデータ ページへアクセスすることがほとんどない
  • メモリ キャッシュが、頻繁にアクセスおよび変更されるすべてのページを含めることができないほど小さい可能性がある
1 番目と 2 番目の項目によって値が急増するのは、ファイルへのアクセスが初めてであるため回避することはできません。3 番目の状況はキャッシュ サイズを大きくすることで回避できます。キャッシュがいっぱいでキャッシュ失敗数が多くなると、メモリ キャッシュが小さすぎて、頻繁にアクセスおよび変更されるすべてのページを含めることができない可能性があります。
MicroKernel キャッシュ用のカウンターも参照してください。
Waits on Page Locks
現在ページ ロックで待機中のクライアント数。
クライアント アプリケーションの作業負荷を調査します。
Waits on Page Reads
ディスクからページ読み取りを待機中のクライアント数。1 つのクライアントが既にページの読み取り処理を行なっている場合、ほかのクライアントは処理中の読み取りが完了するまで待機しなければなりません。
同時に同じファイルの同じページへの読み取りを試みるクライアント数を測定します。
Waits on Record Locks
現在レコード ロックで待機中のクライアント数。
クライアント アプリケーションの作業負荷を調査します。

Pervasive PSQL MicroKernel Transactions

これらのカウンターは、トランザクションに関するクライアント アプリケーションの動作を理解するために役立ちます。たとえば、変更が多く処理に長時間かかる少数のトランザクションと、短時間で処理が完了する多くのトランザクションとでは動作が異なります。

Btrieve API Guide』の 「Begin Transaction(19 または 1019)」「End Transaction(20)」 および 「Abort Transaction(21)」、また『Pervasive PSQL Programmer's Guide』の 「トランザクショナル インターフェイスの基礎」 も参照してください。

表 19 MicroKernel トランザクション用のカウンター
カウンター
説明
典型的な使用法
System Transactions in Progress
進行中のシステム トランザクション数。システム トランザクションはデータファイルの変更を準備し、その変更をファイルに保持し続ける特殊なタイプのトランザクションです。
システム トランザクションの発生頻度が高すぎるまたは低すぎるかどうかを判断するために役立ちます。
データベース エンジンは、システム トランザクション中に変更をデータ ファイルへ書き込みます。システム トランザクションが発生する頻度は、「起動時間制限」および「オペレーション バンドル制限」という 2 つのサーバー設定パラメーターによって決められるか、あるいは L1 キャッシュの空き領域が少ないことが影響します。
通常、システム トランザクションの実行頻度が高すぎたり低すぎたりするとパフォーマンスに悪影響を及ぼします。一般的には、1 秒あたりのページ書き込み数が増加し、レコードを変更する Btrieve オペレーション数は減少し、またアクティブなライタ ロックを待機するクライアント数は増加する可能性があります。これは特定の作業負荷に対する理想的な間隔を測定するための実験が必要となることもあります。
Transaction Commits/sec
1 秒あたりに実行されたコミット数。
アプリケーション トランザクションのコミット数を測定します。『Btrieve API Guide』の「End Transaction(20)」も参照してください。

Windows パフォーマンス モニターの使用

このセクションでは、Windows パフォーマンス モニターの基本的な使用手順について説明し、Pervasive PSQL パフォーマンス カウンターを使用できるようにします。Windows パフォーマンス モニターの使用に関する詳細については、Microsoft のドキュメントを参照してください。

以下に示す手順は、Pervasive PSQL のインストールによって Pervasive PSQL パフォーマンス カウンターが Windows パフォーマンス モニターに登録されていることを前提としています。

Pervasive PSQL データ コレクター セットを表示する

  1. Windows パフォーマンス モニターを起動します。このユーティリティの起動手順はオペレーティング システムによって異なりますが、一般的には[コントロール パネル]の[管理ツール]から起動することができます。また、[ファイル名を指定して実行]ウィンドウ([スタート]メニューから[ファイル名を指定して実行]を選択)で、「perfmon」と入力し[OK]をクリックして起動することもできます。
  2. 左ペインのツリーから[パフォーマンス モニター]をクリックし、右ペイン上部のツールバーにあるプラス記号(+)をクリックします。



  3. [使用可能なカウンター]セクションのカウンター リスト内で、Pervasive PSQL データ コレクター セットへスクロールします。



カウンター セットまたは個別のカウンターをモニターへ追加する

  1. 以下の手順のいずれかを実行します。
    1. カウンター セットとしてまとめて追加するには、[使用可能なカウンター]リストから希望のカウンター セット項目をクリックします。



    2. カウンターを個別に追加するには、そのカウンターが属するカウンター セットを展開し(カウンター セットの項目をダブルクリック、または右端の下矢印をクリック)、その中から対象のカウンターをクリック(複数クリック)します。





      カウンターの説明を見るには、[説明を表示する]オプションを選択してください。



  2. 追加]をクリックしてから[OK]をクリックします。

カウンターのスケールを変更するには

  1. 作業対象のカウンターを右クリックし、[プロパティ]をクリックします。



  2. [データ]タブで、[スケール]ドロップダウン リストから希望の値をクリックします。



    同じグラフ上に 2 つ以上のカウンターを表示する場合に、それらカウンターの出力数値の差が非常に大きい場合は、適切に表示されるようスケールを調整する必要があるかもしれません。データがグラフ化される前に、カウンターの出力値にスケール値を掛けます。 たとえば、1 番目のカウンターの出力値が 53 と 99、2 番目のカウンターの出力値が 578 と 784 であるとします。 1 番目のカウンターのスケールに 10 を設定することで、530 および 990 と出力されるようにするこができます。 これにより、両カウンターのデータをより同等(530、990、578 および 784)に見ることができます。
  3. OK]をクリックします。
    [スケール]フィールドの値は、元の値(この例では 1)から新しい値(この例では 10)に変更されています。





  4. [グラフ]タブで、[垂直スケール]セクションの[最大]および[最小]フィールドに必要な値を設定します。
    グラフ化される対象が非常に小さい(または非常に大きい)場合は垂直スケールを変更することができるので、グラフが見やすくなります。たとえば、カウンターの出力値が常に 20 未満の場合は、垂直スケールの最大を 20、最小を 0 に変更することができます。
  5. OK]をクリックします。


パフォーマンス

パフォーマンス チューニング