我有一个MySQL数据表,里面有大约5亿行的数据。我们需要通过读取这些数据来运行计算,并且计算出的数据(这是原始数据的标准化形式)需要写入另一个InnoDB表中。InnoDB Table Bulk Insert
我们现在的设置是一个虚拟云,其中包含一台机器以及数据库,因此机器数据库连接非常快。
发生在数据上(以及读取数据)的计算速度非常快,整个过程的瓶颈是将标准化数据插入InnoDB表(标准化数据包含一些标记,尽管不长,这会降低插入速度)。
不幸的是,我们无法修改某些系统变量,例如innodb_log_file_size(我们正在使用Amazon AWS),这有助于提高插入性能。
将所有这些数据推送到MySQL上最好的办法是什么?由于计算过程非常简单,我几乎可以编写一个Python脚本来获取标准化数据并以任何格式输出。在计算过程中即时插入这些数据的过程非常缓慢,而且随着时间的推移会变慢。
我想问题是,那么将大量数据插入InnoDB表的最佳过程是什么(就输入格式和实际导入而言)?
感谢您的评论。不过,我对你指的是什么感到困惑。我的表格(包含数据的原始表格和包含标准数据的目标表格)都在同一个MySQL实例上。我需要找到将我计算的值插入到标准表中的最快方法。请让我知道如果还有什么不清楚! – user1094786 2013-03-13 19:41:52
作为您的第一张桌子,我只是将相关数据提取到一张小桌子上,计算新的字段并更新第二张桌子。我更喜欢** mysqldump ** over **创建临时表select * from表where <> **,因为它也会阻止锁。 – georgecj11 2013-03-13 19:56:13