我只是想通过使用supercsv来编写从mysql db获取到CSV的大量数据。我是如何简单地管理性能问题的。超级csv是否有一些限制?
答案 0 :(得分:1)
由于您在问题中几乎没有详细说明如何处理问题,因此很难提出具体建议。所以,这是一般的:
除非您将文件写入非常慢的介质(某些旧的USB记忆棒或其他东西),否则过程中最慢的步骤应该是从数据库中读取数据。
您可以通过以下两种方式构建程序:
这个想法是建立一个通常被称为"管道"的东西。可以把它想象成工厂中的传送带结构:在组装某个小部件的过程中有多个步骤。你不想做的是让第1站处理所有小部件并让第2和第3站同时闲置,然后将整个小部件容器传递到第2站开始工作,而第1和第3站闲置并且等等。相反,站1需要立即发送小批量(一次1个或大约10个)小组,这些小组立即对站2进行,以便他们可以尽快开始对其进行操作。目标是始终保持所有电台尽可能繁忙。
在你的例子中,站1是mysql检索记录,站2是你的应用程序转发(和处理?)它们,站3是supercsv。因此,只需确保supercsv可以尽快开始工作,而不必等待mysql完成整个请求。
如果你这样做,你应该能够尽快生成csv文件,因为mysql可以向你抛出记录 * ,然后,如果它仍然太慢,你需要重新考虑你的数据库后端。
* 我还没有使用supercsv,所以我不知道它的表现如何,但考虑到它的工作是多么微不足道,它有多受欢迎,我觉得很难相信它在这项任务中最终表现不如mysql(在一条记录所需的处理时间内测量)。但这可能值得验证......