1

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

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

结果存储在结果表中。

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

我从 java 客户端一次调用每个比率,或者在多线程 java 客户端中调用多个比率。

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

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

非常感谢。

4

2 回答 2

0

看看具体化查询表。如果您正在处理的是报告,尤其是不需要绝对最新的信息,您可以设置 MQT,其中包含计算繁重的部分,例如每小时版本。

于 2012-12-16T12:05:27.150 回答
0

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

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

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

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

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

java中的多线程永远不会让人心(只要您保持线程安全),在您进行大量计算时特别有用。我不使用 db2,所以我不知道它在多线程方面有多好,但如果它是单线程的,我怀疑它是否会达到 100% 的 cpu 使用率。您应该检查一下您的 db2 的 conf 文件以稍微调整一下它还阅读有关IBM DB2 集群的文章

我还建议使用数据仓库工具来针对 db2 分析您的脚本性能

祝你好运

于 2012-08-23T11:05:02.537 回答