40個のバインド変数を列の値として使用するスロー・インサート文に問題があります。 WANリンク経由で数秒間実行され、ネットワークアナライザーを使用するまで問題を解決できませんでした。この準備されたクエリを実行するたびに、クライアントとサーバー間で120パケット以上を交換する必要がありました。より効率的に実行するためにできることは何ですか?WAN経由で多くのバインド変数を持つoracle insertが非常に遅い
同じホストから実際のパラメータ(バインド変数なし)を実行すると、数十ミリ秒で完了します。パラメータには何も特別なものはなく、短いvarcharsと数値しかありません。
私たちはODACでDelphi 6を使用していますが、ODACとOracleクライアントのさまざまなバージョンを無償で試しました。サーバー側では、Oracle 10と11の両方を試しました。
LAN上でも、個々のバインドごとにサーバーに移動しないようにするオプションがありますが、 。もちろん、エラー処理のセマンティクスは少し違いますが、まだまだ... – Thilo
実際には、すべてのバインドがサーバーに送られると、バッチクエリのアイデアは完全に否定されません(ここで、主なパフォーマンスの改善はサーバー往復)? – Thilo
ネットワークスタックを完全に変更することはできません。挿入されたデータはテキストファイルから発生するため、代わりにSQLローダーを使用することを検討しています。しかし、コードを壊さずにパフォーマンスを向上させることができれば、もっと幸せになれます。 – Juraj