我试图使用德尔福2007年批从TADOTable将数据移动到MySQL的TMyTable
程序从传统数据库通过ODBC获取数据的旧数据库(MS Access)与MySQL服务器使用CRBatchMove导入表连接并使用TADOTable.SaveToFile()将其存储在本地硬盘上。程序的第二部分将该文件读入另一个TADOTable,并使用TCRBatchMove将其转移到MySQL服务器(通过DevArt的TMyTable)。在这个过程中,出于某种原因,批量移动看起来非常慢。
以下试验中的数据量约为100,000条记录,每条记录约有120个字段。大多数字段是整数和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服务器的速度如此之慢。有没有办法加快这项任务?还是有更好的方法来完成这个?
硬盘没有看到代码的说。这可能与您在TMyTable中随后在MySQL中插入数据的方式有关,例如,如果这在每个行上触发MySQL上的索引更新。 –
您使用的是交易吗?它可能会加速插入。 –
MySQL有一个名为'load data infile'的函数,请参阅:http://dev.mysql.com/doc/refman/5.1/en/load-data.html您可以使用它来尽可能快地插入数据。这将为您提供插入MySQL时间的基准,并让您确定延迟是在MySQL还是Delphi中。如果您有TMyTable的源代码,则也可以使用分析器。 – Johan