スレッドの動作は、主に 5 つの要素によって制御されます。これらは、サーバ・オプションによって管理されます。すべてのプラットフォームで、これらのオプションのすべてがサポートされるわけではありません。
マルチプログラミング・レベル (-gn サーバ・オプション) -gn オプションは、サーバのマルチプログラミング・レベルを制御します。この値によって、同時にアクティブにできるタスクの最大数が決定されます。データベース要求は、それぞれ、少なくとも 1 つのタスクを使用します。クエリ内並列処理が関連する場合は、複数のタスクを使用することもあります。また、サーバは、内部的な管理処理を行うために臨時にタスクをスケジュールすることもあります。サーバ内にあるタスクの数がマルチプログラミング・レベルを超えると、未処理のタスクは、現在実行中のタスク (アクティブ・タスク) が完了するのを待機します。デフォルトでは、ネットワーク・データベース・サーバ用とパーソナル・データベース・サーバ用に最大で 20 のタスクを同時に実行できます。-gn サーバ・オプションとデータベース・サーバのマルチプログラミング・レベルの設定を参照してください。
内部実行スレッドあたりのスタック・サイズ (-gss サーバ・オプション) -gss オプションを使用して、サーバの内部実行スレッドあたりのスタック・サイズを設定できます。-gss オプションによって、データベース・サーバのメモリ使用量を節約できます。これは、メモリが限られている環境で役立ちます。このオプションをサポートする Windows オペレーティング・システムは、Windows Mobile だけです。-gss サーバ・オプションを参照してください。
プロセッサの数 (-gt サーバ・オプション) 複数のプロセッサがある場合は、-gt オプションを指定して、スレッドが使用できるプロセッサの数を制御できます。-gt サーバ・オプションを参照してください。
プロセッサの同時実行性 (-gtc サーバ・オプション) CPU 上で同時に実行できるスレッド数の上限を指定できます。デフォルトでは、データベース・サーバは、ライセンスされた各物理プロセッサにおいて、すべてのハイパースレッドとコアで実行されます。-gtc サーバ・オプションを参照してください。
-gn を大きくすると、スレッドのデッドロックが発生する可能性を低減できます。-gn サーバ・オプションを参照してください。
-gt を 1 に設定すると、同時実行性の問題を回避するのに役立つことがあります。-gt サーバ・オプションを参照してください。
Windows の場合、パフォーマンス・モニタで [要求 : アクティブ] や [要求 : 未スケジュール] の値を確認すると、使用する適切な -gn の値を判断できます。アクティブな要求の数が常に -gn よりも少ない場合は、-gn を減らすことができます。要求の合計数 (アクティブ + 未スケジュール) が頻繁に -gn を上回る場合は、-gn の値を増やすことができます。パフォーマンス・モニタの統計値と-gn サーバ・オプションを参照してください。
次の例は、-gt と -gtc の設定に基づいて、データベース・サーバが CPU を選択する方法を示します。この例では、システムが 4 プロセッサ構成で、各プロセッサにコアが 2 つあることを前提としています。物理プロセッサは文字で、コアは数字でそれぞれ区別します。したがって、このシステムにはプロセッサ・ユニットとして A0、A1、B0、B1、C0、C1、D0、D1 が存在することになります。
シナリオ | ネットワーク・データベース・サーバの設定 |
---|---|
シングル CPU ライセンス、または -gt に 1 が指定されている |
スレッドは A0 または A1 で実行できます。 |
CPU のライセンスに制限がなく、-gtc に 5 が指定されている |
スレッドは A0、A1、B0、C0、D0 で実行できます。 |
データベース・サーバに 3 CPU ライセンスがあり、-gtc に 5 が指定されている |
スレッドは A0、A1、B0、B1、C0 で実行できます。 |
CPU のライセンスに制限がなく、-gtc に 1 が指定されている |
スレッドは A0 でのみ実行できます。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |