将stdout重定向到日志文件会导致性能下降

时间:2014-01-24 20:06:50

标签: db2 ksh

这对我来说是一个非常令人困惑的问题。

我正在运行db2加​​载操作,但是否将stdout重定向到本地日志文件会有很大的不同。

以下是统计数据:

[dbadmin@mymachine:/home/dbadmin]# time db2 -tv "LOAD FROM ./mat.AK OF DEL METHOD P (1,2,3) MESSAGES ./mat.AK.log REPLACE INTO myschema.mytable (col1, col2, col3) STATISTICS YES AND INDEXES ALL INDEXING MODE REBUILD;" >> ./mat.AK.log

real    1m56.75s
user    0m0.00s
sys     0m0.01s

[dbadmin@mymachine:/home/dbadmin]# time db2 -tv "LOAD FROM ./mat.AK OF DEL METHOD P (1,2,3) MESSAGES ./mat.AK.log REPLACE INTO myschema.mytable (col1, col2, col3) STATISTICS YES AND INDEXES ALL INDEXING MODE REBUILD;"

Number of rows read         = 69379
Number of rows skipped      = 0
Number of rows loaded       = 69379
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 69379



real    0m1.42s
user    0m0.01s
sys     0m0.00s

我不确定为什么将stdout重定向到./mat.AK.log整个操作的成本接近2分钟,而在没有重定向的情况下将其导入db2表需要不到2秒。

请问,好吗?

1 个答案:

答案 0 :(得分:0)

事实证明,问题的原因是LOAD操作中的“MESSAGES”命令和尾部的重定向指令之间的竞争条件。保持它们并使它们都指向同一个文件会产生竞争条件并导致延迟。

在我丢弃其中一个之后,问题就解决了。