SQL Server 2019 データベースに対して何千もの個別の odbc_exec() SELECTS および INSERTS を実行するバッチ処理 PHP スクリプトを用意します。PHP 7.3 から 7.4 へのアップグレード後、プロセスは 7 倍遅く完了します (アップグレード前 20 分、アップグレード後 180 分)。
同様の問題/バグ レポートが見つからず、トラブルシューティングのサポートが必要です。はい、PDO を使用するか DB ストアド プロシージャに移行するために書き直す必要があるかもしれませんが、PHP 7.4 でこのスクリプトのパフォーマンスを低下させるために PHP または PHP の ODBC 拡張機能で何が変更されたかを理解したいと思います。
環境とテストに関する注意事項
- プロセスは、比較的小さなデータベース レコードを多数マップします (大きな nvarchar フィールドなどはありません)。
- すべての 64 ビット ソフトウェアおよびドライバー。
- Windows 用のプリコンパイル済み PHP 7.3.32 (TS VC15) を 7.4.25 にアップグレードしました。同様に遅いPHP 8.0も試しました。
- Windows Server 2019 Web および SQL Server (アップグレード中の変更なし)。
- Stock PHP ODBC 拡張設定 (アップグレード中の変更なし)。
- SQL Server 用の最近の MS ODBC ドライバー。利用可能な最新のもの(17.8.11)に更新しようとしました。