数据库
首页 > 数据库> > php – 将批量数据导入MySQL

php – 将批量数据导入MySQL

作者:互联网

所以我试图将一些销售数据导入我的MySQL数据库.数据最初采用原始CSV文件的形式,我的PHP应用程序需要首先处理该文件,然后将处理后的销售数据保存到数据库中.

最初我正在进行单独的INSERT查询,我意识到这是非常低效的(约6000次查询需要大约2分钟).然后我生成了一个大型查询并一次性插入数据.这使我们的效率提高了3400%,并将查询时间缩短到超过3秒.

但据我了解,LOAD DATA INFILE应该比任何类型的INSERT查询更快.所以现在我正在考虑将处理过的数据写入文本文件,并使用LOAD DATA INFILE将其导入数据库.这是将大量数据插入数据库的最佳方式吗?或者我完全以错误的方式解决这个问题?

我知道几千行主要是数字数据在宏观方案中并不是很多,但我正在努力使这个内部网应用程序尽可能快速/响应.我还想确保在我们决定将该计划授权给其他公司的情况下,此流程可以扩展.

更新:

所以我按照建议继续测试LOAD DATA INFILE,认为它可能只给我边际速度增加(因为我现在将相同的数据写入磁盘两次),但是当它将查询时间从超过3300ms减少时我很惊讶降至~240ms.页面仍然需要大约1500毫秒来执行总计,但它仍然比以前明显更好.

从这里我想我会检查数据库中是否有任何多余的索引,并且,由于除了我的两个表之外的所有表都是InnoDB,我将研究优化InnoDB缓冲池以优化整体性能.

解决方法:

LOAD DATA INFILE非常快,是将文本文件导入MySQL的正确方法.根据这一点,这是加快数据插入速度提高20倍的推荐方法之一:

https://dev.mysql.com/doc/refman/8.0/en/insert-optimization.html

假设将处理后的数据写回文本文件比将其插入数据库更快,那么这是一个很好的方法.

标签:php,mysql,bulkinsert,performance
来源: https://codeday.me/bug/20190722/1497912.html