db计算是否值得并行化?

时间:2012-08-23 10:23:51

标签: java parallel-processing db2

我使用DB2 9.7.5 64位。服务器有足够的内存但没有集群。

我需要进行大量计算:在我的数据库中计算几个(大约20个)比率。其中一些可能需要长达25秒。

结果存储在结果表中。

现在我有几个解决方案(作为一项政策,我们排除了存储过程)。

我从java客户端OR一次调用一个比率 我在多线程java客户端中调用了几个比率。

我的假设是,从多线程调用是没用的,因为我的数据库是瓶颈。但我并不完全确定db引擎真正为1次查询提供了100%的cpu。我认为引擎必须能够在多个查询之间共享其CPU功能。

我目前正在阅读IBM数据手册,但希望得到您的反馈。

非常感谢。

2 个答案:

答案 0 :(得分:0)

  

我需要进行大量计算:在我的数据库中计算几个(大约20个)比率。其中一些可能需要长达25秒。

25秒不一定是坏事。也许它是一个很好的结果,取决于你的计算

  

现在我有几个解决方案(作为一项政策,我们排除了存储过程)。

存储过程不是邪恶的,你只需要知道如何安全地使用它们

  

我的假设是,从多线程调用是没用的,因为我的数据库是瓶颈。但我并不完全确定db引擎真正为1次查询提供了100%的cpu。我认为引擎必须能够在多个查询之间共享其CPU功能。

java中的多线程永远不会在心中(只要保持线程安全),在你进行大量计算时尤其有用。 我不使用db2所以我不知道多线程有多好,但如果它的单线程我怀疑它将达到100%的CPU使用率。你应该检查你的db2的conf文件稍微调整一下 另请阅读有关IBM DB2 clustering

的文章

我还建议使用data warehouse工具来分析你的脚本性能againest db2

祝你好运

答案 1 :(得分:0)

看看Materialized Query Tables。如果您正在使用的是报告,特别是不需要绝对最新的信息,您可以设置MQT,其中包含重要的部分,例如每小时版本。