English 中文(简体)
我如何优化这一档案系统I/O约束方案?
原标题:How should I optimize this filesystem I/O bound program?
  • 时间:2009-10-20 13:27:31
  •  标签:

我有一个像这样的 p子方案:

  1. Read a row from a csv file.
  2. Do some transformations on it.
  3. Break it up into the actual rows as they would be written to the database.
  4. Write those rows to individual csv files.
  5. Go back to step 1 unless the file has been totally read.
  6. Run SQL*Loader and load those files into the database.

第6步确实需要很多时间。 看来是第4步,占用了大部分时间。 大部分情况下,我要最优化地处理在拥有一定类型的区域援助署设置的四分服务器上运行的数百万低收入者的一套记录。

我必须解决以下几个想法:

  1. Read the entire file from step one (or at least read it in very large chunks) and write the file to disk as a whole or in very large chunks. The idea being that the hard disk would spend less time going back and forth between files. Would this do anything that buffering wouldn t?
  2. Parallelize steps 1, 2&3, and 4 into separate processes. This would make steps 1, 2, and 3 not have to wait on 4 to complete.
  3. Break the load file up into separate chunks and process them in parallel. The rows don t need to be handled in any sequential order. This would likely need to be combined with step 2 somehow.

当然,这个问题的正确答案是“通过测试发现最快的东西”。 然而,我主要试图了解我应首先花在哪里。 是否有人对这些事项拥有更多经验?

最佳回答

IO 缓冲器和OS should已经处理预先筛选输入文档和延迟书写,直到它需要其他东西方的援助团,或者仅仅担心在援助团内有过脏数据。 除非你迫使监督厅立即写信,如在每封信件后结案,或在海关数据系统中开案。

如果本组织没有做正确的事,你可以尝试提高缓冲面积(第3个参数到<条码>开放(<>>>)。 对于100MB/s 10ms latency IO系统提供的有关适当数值的某些指导,1MB IO的大小将产生大约50%的相对费用,而10MB IO的大小将产生9%的间接费用。 如果国际独立组织仍受约束,你很可能需要更多的带宽。 利用你的职业介绍所的具体工具,检查你从磁盘上或从磁盘上获得的带宽。

同样有用的是检查第4步是否占用了许多时间执行或等待国际交易日志。 如果执行职务,需要花更多的时间检查哪一部分是主人,并优化,或将工作分成不同的程序。

问题回答

穷人的地图:

http://www.gnu.org/manual/gawk/html_node/Split-Program.html” rel=“noreferer”>split,将档案整理成与你拥有的CPU一样的许多件。

rel=“noreferer”>batch,以平行管理你的muncher。

使用cat,以压缩结果。

如果是I/O limit,我发现最佳的办法是阅读或书写entire<>>/em>文档,以便一度将记忆记录从那里流出。

在经过广泛测试后,我发现,我的操作时间不受我从/转至磁盘的数据量的约束,而受我使用的I/O操作次数的约束。 这是你必须优化的。

我不了解沙捞越,但如果有办法告诉它从援助团的整篇档案中写出来,而不是为每个星单独发行一/O,那么你需要做些什么。

当然,这方面的缺点是,档案比现有的援助团大得多。 处理该问题的方法很多,但这是另一个问题。

您可以使用斜线。 4) 如果浏览量少于两千兆克,则低数百万声。

第4步使用缓冲文字。

撰写一份简单的职能,简单地将产出推向细表,检查一下长度,只写写足够多的4k字。 首先我要说的是32k缓冲器及其时间。

你们每个档案都有一个缓冲,以便大多数“标准”实际上打上了磁盘。

能否收集1 000个双管网,然后直接投到数据库服务器并安装?

这将从第4步所需的软盘中删除节余和装载。

如果数据库服务器是交易,这也是这样做的一种安全方法——在你第一行之前就开始数据库,并在最后一行之后投入使用。





相关问题