我有一个大数据集到MySQL(用户,公司,联系人)?约有100万条记录。
现在我需要从导入文件(csv)导入大约100000条记录的新用户,公司,联系人。我从文件中记录了所有三个要素(用户,公司,联系人)的所有信息。 此外,在生产中我不能使用LOAD DATA(只是没有这么多的权利:()。
因此,应该对该数据集应用三个步骤。 - 与现有的DB数据进行比较 - 更新它(如果我们将在上一步找到一些东西) - 并插入新的记录
我在服务器上使用php来做到这一点。我可以看到两种方法:
哪种方法更有效?按CPU,内存或时间使用
我可以使用交易吗?或者它会减慢整个生产系统的速度?
感谢。
答案 0 :(得分:2)
CPU时间/时间不会有很多,尽管读取整个文件的时间会更快。但是,对于这么大的数据集,将所有记录读入内存所需的额外内存将大大超过时间优势 - 我肯定会一次处理一行。
答案 1 :(得分:0)
您是否知道phpMyAdmin具有针对大型SQL文件的“可恢复导入”的漂亮功能?
只需检查部分导入部分中的“允许导入中断”。瞧,PhpMyAdmin将停止并循环,直到所有请求都被执行。
仅仅“使用工具”而不是“重新发明轮子”可能更有效率
答案 2 :(得分:0)
我认为,第二种方法更容易接受: