複数CPUのスケーリング
複数CPUのパフォーマンスを向上させるためのヒントを示します。
プロトタイプとしてのデモ・アプリケーションの実行
パフォーマンスへの影響: 不定
tptbm
など)を実行する方法があります。
tptbm
アプリケーションには、マルチユーザーのスループット・ベンチマークが実装されています。これでは、TimesTen処理およびSELECT
、UPDATE
、INSERT
などを組み合せたトランザクションを実行するプロセス数を変更するオプションを含め、その実行方法を制御できます。tptbm -help
を実行すると、オプションの完全なリストが表示されます。
デフォルトでは、このデモは、トランザクションごとに1つの処理を実行します。トランザクションごとの処理数を増やして、実際のアプリケーションに近づけることができます。トランザクションが大きくなると、アプリケーションのプロファイルによって、スケーラビリティが向上する場合と低下する場合があります。
このデモのマルチプロセッサ・バージョンを実行すると、複数CPUシステムでのアプリケーションのパフォーマンスを予測して評価できます。デモでのスケーラビリティが高く、アプリケーションでのスケーラビリティが低い場合は、アプリケーションを簡略化して問題の箇所を確認します。TimesTenのコールをコメント・アウトしても、アプリケーションに問題があるためスケーリングが不十分なままになる場合があります。
また、たとえば、シミュレートされたアプリケーション・データの一部が正しく生成されていないため、数行の同じ行がすべての処理でアクセスされていることが発見される場合があります。アクセスでデータが変更される場合、そのタイプのローカライズされたアクセスは、スケーラビリティを大幅に阻害することになります。
tptbm
およびその他のデモ・アプリケーションの詳細は、クイック・スタートのホームページ(installation_dir
/quickstart.html
)を参照してください。「Sample Programs」の下のODBCリンクに移動してください。
CPU当たりのデータベース集中型接続の数の制限
パフォーマンスへの影響: 不定
SYS.SYSTEMSTATS
表のlock.timeouts
フィールドまたはlock.locks_granted.wait
フィールドを確認します。これらの値が大きい場合は、過度の競合が発生している可能性を示し、スケーリングが不十分になることがあります。
TimesTenはCPU集中型であるため、CPU当たりのデータベース集中型の接続の数を1つのみにすることで、最適なスケーリングが実現されます。4CPUシステムまたはハイパースレッド機能を持つ2CPUシステムを使用する場合、4プロセッサ・アプリケーションのパフォーマンスは良好ですが、8プロセッサ・アプリケーションのパフォーマンスは低くなります。アクティブなスレッド間での競合が多くなりすぎます。ただし、多くのトランザクションが永続的にコミットされる場合、このルールは適用されません。この場合、ファイル・システムへのI/O操作が増加するために接続が極度にCPU集中型にはならず、システムでより多くの同時接続をサポートできるようになります。
読取り処理の使用(使用可能な場合)
パフォーマンスへの影響: 不定
準備、再準備および接続の制限
パフォーマンスへの影響: 不定
SYS.SYSTEMSTATS
表のstmt.prepares.count
列は、アプリケーションによって文が直接準備された頻度を示します。stmt.prepares.count
列の値が大きい場合は、次のことを確認します。
-
アプリケーションでパラメータ化された文が使用されています。
-
アプリケーションでは該当するSQL文を1回のみ準備し、単一の実行ごとには準備していません。
-
アプリケーションではデータベースから頻繁に接続および切断しません。している場合は、アクティブな期間が長い接続を使用することを検討してください。
接続および切断操作は、リソースを大量に消費し、スケーラビリティを損なう操作となります。アプリケーションでの接続および切断操作の数を最小化してください。パフォーマンスを高めるには、パラメータ化され再準備されたSQL文を使用して、長期間のアクティブな接続を使用します。
アプリケーションで頻繁な接続および切断操作を回避できない場合、または存続期間が長い接続を使用するようにアプリケーションを変更できない場合は、接続プーリングを使用することを検討してください。接続プーリングは、接続および切断操作の頻度を減らし、アプリケーションがデータベースから頻繁に接続および切断する場合よりも準備済の文の利用率を向上させることができます。
リカバリ時の索引再構築のパラレル実行
パフォーマンスへの影響: 不定
RecoveryThreads
を最小値に設定すると(使用可能なCPUの数、索引の数)、リカバリが必要な場合に、索引をパラレルで再構築できるようになります。
再構築が必要な場合、進行状況はユーザー・ログで確認できます。RecoveryThreads
を使用可能なCPUの数より大きい値に設定すると、リカバリに必要な時間が、シングルスレッドの場合より長くなります。
プライベート・コマンドの使用
パフォーマンスへの影響: 不定
PrivateCommands
を1に設定します。
プライベート・コマンドを使用すると、使用する一時領域の量が増えますが、コストに見合った調整が容易になります。
『Oracle TimesTen In-Memory Databaseリファレンス』のPrivateCommandsを参照してください。