Delphi 2007を使用してCRBatchMoveを使用して、古いデータベース(MS Access)からMySQLサーバーにテーブルをインポートしようとしています。
プログラムは、ODBC接続を介してレガシーデータベースからデータをフェッチし、TADOTable.SaveToFile()を使用してローカルハードドライブに保存します。プログラムの2番目の部分は、このファイルを別のTADOTableに読み込み、TCRBatchMoveを使用して(DevArtのTMyTableを介して)MySQLサーバーに転送します。このプロセスでは、バッチ移動が何らかの理由で非常に遅いように見えます。
次の試行のデータ量は、それぞれ約120フィールドの約100,000レコードです。ほとんどのフィールドは整数とVARCHARです(それぞれのVARCHARは32文字未満です)。
私が得たパフォーマンスの数値は次のとおりです。
Time taken to bring data to local file over ODBC connection: 17 seconds
Time taken to load data from local file into TADOTable: 3 seconds
Time taken by TCRBatchMove to move data from TADOTable to TMyTable: > 30 minutes
MySQLサーバーは開発マシン(i7-2.8GHz)でローカルに実行されており、それ以外の点ではデータベースは非常にスッキリしています)。
バッチ移動がデータをMySQLサーバーにプッシュするのが非常に遅いのはなぜですか。このタスクをスピードアップする方法はありますか?それとも、これを達成するためのより良い方法はありますか?