我们正在测试特定于应用程序的设计,我们需要在同时触发多个查询后显示渐进计数。
当我们触发单个查询时,我们成功地能够异步获取结果。
但是,当我们同时发出3-4个查询时,经过大量的时间和在为每个查询获取一些记录之后 我们得到了一个例外情况
“com.ibm.db2.jcc.c.SqlException:DB2 SQL错误:SQLCODE:-1218,SQLSTATE:57011,SQLERRMC:4099”
因此,所有触发的查询都不会被完全执行。
如果逐个触发这些查询,则没有问题。 (query2在query1完成后开始执行等等)
在控制中心查找此SQLCODE后,我们发现了
的详细信息SQL1218N缓冲池中当前没有可用的页面
"<buffpool-num>".
说明:
当前正在使用缓冲池中的所有页面。一个要求 使用另一个页面失败。
如果再次执行,该声明可能会成功。如果发生此错误 通常,以下部分或全部操作可能会进一步阻止 失败:
增加缓冲池大小
减少数据库代理和/或连接的最大数量
降低最大并行度
减少此
中的表空间的预取大小缓冲池
将一些表空间移动到其他缓冲池中。
sqlcode:-1218
sqlstate:57011
在我们的数据库实例上,我们已经有一个32K页面大小的缓冲池&amp;甚至在创建另一个缓冲池之后 32K,问题仍然存在。
任何人都可以帮助我们解决问题。
谢谢&amp;的问候,
Ravindra Jain
答案 0 :(得分:1)
缓冲池的页面大小必须与它关联的表空间的页面大小相匹配。您的所有表空间都使用32K页吗?您应该检查是否有不同的缓冲池用完了页面。 10,000页应该足以避免您看到的错误。
答案 1 :(得分:0)
最可能的原因是您的事务没有发出“提交”,因此缓冲池中存在未建立的数据。
对于当前硬件来说,32K似乎非常小(因为DB2可以处理几兆字节的CLOB和BLOB)32MB或更多将更适合缓冲池大小。
答案 2 :(得分:0)
我们在插入/更新每条记录后提交。 因此,重做日志不是问题。 (缓冲池永远不会被过度泛滥)。
32K是缓冲池的页面大小&amp;缓冲池包含10000页。 那么,这些配置是否适合缓冲池?