【发布时间】:2015-08-26 16:54:37
【问题描述】:
我每天要导入近一百万条记录,同时导入进行过滤然后添加到数据库表中。它会导致性能问题在 9999 上的某个时间循环停止。有没有办法可以在循环中进行线程处理?
启动百万线程是个好主意吗??
谢谢
【问题讨论】:
标签: multithreading performance loops csv coldfusion-9
我每天要导入近一百万条记录,同时导入进行过滤然后添加到数据库表中。它会导致性能问题在 9999 上的某个时间循环停止。有没有办法可以在循环中进行线程处理?
启动百万线程是个好主意吗??
谢谢
【问题讨论】:
标签: multithreading performance loops csv coldfusion-9
启动百万线程是个好主意
绝对不是。即使您可以打开那么多线程(这是值得怀疑的),这也是一个糟糕的主意。线程不是万能的。在这种情况下,使用它们只会加剧真正的问题,即循环是执行此任务的错误工具。
使用循环导入这么多数据的效率非常低。大多数数据库都提供专门为批量导入数据而设计的工具。这些工具的性能将比循环好得多。您没有提及您使用的是哪个 dbms,但一些示例是 MySQL 的 LOAD DATA、SQL Server 的 BULK INSERT 命令,或者正如 Scott 在 cmets 中提到的那样,BCP。将数据导入工作表。 (如果需要,将文件分成更小的块,并一次处理 100K 行的批次。)加载数据后,使用 SQL 批量过滤/处理它并将其传输到需要去的任何地方。
【讨论】: