クライアント・アプリケーションで使用できるようになる前に、ローがクライアント側にフェッチされるかどうかを制御します。
Off、Conditional、Always
Conditional
個々の接続または PUBLIC グループに設定できます。すぐに有効になります。
このオプションは、クライアント・アプリケーションで使用できるようになる前に、ローがクライアント・サイドにフェッチされるかどうかを制御します。一度に複数のローをフェッチすると、クライアント・アプリケーションが一度に 1 つずつローを要求した場合 (カーソルのローをループする場合など) でも、応答時間が短縮され、データベースへの要求数の減少によって全体的なスループットも向上します。
Off はプリフェッチが行われないことを意味します。
Conditional (デフォルト) の場合は、カーソル・タイプが SENSITIVE か、クエリにプロキシ・テーブルが含まれないかぎり、プリフェッチが発生します。
Always は、SENSITIVE タイプのカーソルの場合も、プロキシ・テーブルが関連するカーソルの場合も、プリフェッチが行われることを意味します。
Always は、一部のカーソルのセマンティックに影響するため、注意して使用してください。たとえば、SENSITIVE タイプのカーソルが ASENSITIVE タイプになる場合があります。また、プリフェッチと、アプリケーションのフェッチ要求の間に値が更新された場合は、古い値がフェッチされることがあります。さらに、プロキシ・テーブルが関連するカーソルでプリフェッチを使用した場合、クライアントがプリフェッチ・ローを再フェッチしようとすると、エラー -668「カーソルは FETCH NEXT 操作に制限されています」が発生する可能性があります。最初のフェッチの後で、初めてフェッチ・カラムが再バインドまたはバインドされた場合、クライアントは、ロールバックの後、または 0 の相対フェッチ時、あるいは場合によっては GET DATA が使用されるときに、プリフェッチ・ローを再フェッチしようとすることがあります。
value-sensitive カーソル・タイプには、ESQL SENSITIVE と SCROLL カーソル・タイプ、ODBC と OLE DB DYNAMIC および KEYSET カーソル・タイプが含まれます。
prefetch オプションの設定は、Open Client 接続と jConnect 接続では無視されます。
DisableMultiRowFetch 接続パラメータが YES に設定されている場合、prefetch データベース オプションは無視され、プリフェッチは行われません。
このオプションでは、以前は On も有効な値でした。この値は現在は Conditional のエイリアスです。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |