クエリーを実行すると「クエリー実行中失敗しました。SQL QUERYが指定された時間制限または記憶制限を超えています。 SQLCODE=-666」のエラーメッセージが表示されて実行できないことがあります。
【「SQLCODE=-666」が表示される仕組みについて】
PHPQUERYでのクエリー実行時には、CREATE TABLEを使用しており、通常のACS(エミュレータ)で実行した際のSQLよりもオーバーヘッドがかかるような仕組みとなっています。
そのため、データの出力結果の件数が多い、出力フィールド数が多い、結合ファイルの数が多い等、複雑な条件やデータ・フィールド数が多くなるほど当エラーになりやすいです。
この制限に引っかかった場合は、クエリーの処理を「中断」ではなく「全くしない」という動きとなるので、2~3秒でエラーが返ってくるような動きとなっています。
【回避方法】
設定値の説明及び変更方法は下記URLをご参照ください。
処理時間制限の対処方法
【お客様事例】
クエリー処理時間制限と一時記憶域限界の照会はそのままで、クエリー最大件数を1,000,000件から3,000,000件に変更しただけで、10秒で結果が表示されていたクエリーが実行できず、当エラーが表示されるようになったとのご報告がありました。
クエリー最大件数が多くなれば、結果サイズも大きくなるので、クエリー最大件数を変更するだけではなく、一時記憶域限界の照会も大きくするように設定を変更していただきました。
現在運用中のシステムに影響が出ないようにタイムアウトを設定しているという意図もございますので、設定値はお客様にご判断いただくしかございません。
弊社の推奨としてはいきなり2倍3倍に伸ばすより、少しずつタイムアウトを伸ばして様子を見るという手段をお願いしています。
また、EXCELテンプレートは通常のダウンロードよりもメモリ消費が大きい為、EXCELテンプレートを利用して、設定時間を6000秒に設定しているお客様でもタイムアウトが発生したというお問い合わせもございました。
この場合もタイムアウト時間の見直し、または抽出結果の件数を減らしていただいております。
また、検索条件にRANGEを使用するとタイムアウトが発生するというお問い合わせも多いですので、RANGEを使用する際はご注意ください。
制限なしだとサーバービジー状態を招き、大量のメモリの消費が発生し、運用中の他システムにも影響がでる可能性がありますので、避けることを推奨しております。
システム設定に関しましてはお客様のサーバー環境、メモリ、作成クエリー等に依存してしまい、一概にはご案内ができないことをご了承ください。
コメント
0件のコメント
サインインしてコメントを残してください。