【问题标题】:Coldfusion Importing CSV File Million Records causing performance issue..CFThread WorksColdfusion导入CSV文件百万记录导致性能问题..CFThread Works
【发布时间】:2015-08-26 16:54:37
【问题描述】:

我每天要导入近一百万条记录,同时导入进行过滤然后添加到数据库表中。它会导致性能问题在 9999 上的某个时间循环停止。有没有办法可以在循环中进行线程处理?

启动百万线程是个好主意吗??

谢谢

【问题讨论】:

    标签: multithreading performance loops csv coldfusion-9


    【解决方案1】:

    启动百万线程是个好主意

    绝对不是。即使您可以打开那么多线程(这是值得怀疑的),这也是一个糟糕的主意。线程不是万能的。在这种情况下,使用它们只会加剧真正的问题,即循环是执行此任务的错误工具。

    使用循环导入这么多数据的效率非常低。大多数数据库都提供专门为批量导入数据而设计的工具。这些工具的性能将比循环好得多。您没有提及您使用的是哪个 dbms,但一些示例是 MySQL 的 LOAD DATA、SQL Server 的 BULK INSERT 命令,或者正如 Scott 在 cmets 中提到的那样,BCP。将数据导入工作表。 (如果需要,将文件分成更小的块,并一次处理 100K 行的批次。)加载数据后,使用 SQL 批量过滤/处理它并将其传输到需要去的任何地方。

    【讨论】:

    • im 使用 MSSQL 2008 服务器和应用服务器是 Coldfusion 9
    • 这是我获取平面文本文件的唯一问题......跨度>
    • (编辑)不是一百,而是一百千。确切的大小取决于您以及您的环境可以支持什么。 RE:在内存中加载文本文件会花费我更多 虽然有一些方法可以改进文件处理,但你是说因为你只是认为它会更糟,还是因为你真的试过了吗?如果没有,请先尝试。否则,请使用您的代码更新您的问题。很难相信吐出一个 csv 可能比运行一百万个单独的查询和线程更糟糕......
    • 考虑使用 SQL 大容量复制 (bcp) 命令行实用程序来导入数据。它会更快。
    • (编辑错字修复)是的,bcp 是另一个工具,可能比批量插入更好。最重要的是,任何批量加载工具都会比循环一百万次做得更好......
    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2020-08-25
    • 2019-05-04
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多