在使用ODBC连接查询Informix数据库时,分析器堆栈已满

时间:2012-03-14 08:42:31

标签: odbc stack database-connection informix

我与Informix数据库建立了ODBC连接。在对db执行负载测试时,它会在~12K插入查询后给出“没有足够的空间用于解析器堆栈”的错误。控制流程为:

  1. SQLConnect
  2. SQLAllocStmt
  3. SQLSetStmtAttr
  4. SQLBindParameter
  5. SQLPrepare
  6. SQLExecute
  7. 调用SQLFreeStmt
  8. 重复步骤2到7
  9. 因此,为每个查询分配一个新的语句句柄,同时所有查询都在同一个连接上执行。确切的错误陈述是:

    37000:[Informix][Informix ODBC Driver]General error. Not enough space for parser stacks
    

    这是一个已知错误吗?我也无法找到任何内存泄漏。在大量“插入”查询之后,增加堆栈的大小可能最终导致相同的问题。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您是否使用各种~12K不同的插入语句加载数据库?

如果没有,那么您不需要执行所有API调用。而是重复步骤2到8,对于相同的INSERT语句,您可以重复步骤4,5和6.这样,每个表都有一个PreparedStatement。不要为要插入的每一行创建PreparedStatament。我认为如果你改变你的加载程序以这种方式工作,错误可能会消失。

此外,您还可以向我们展示您的ClientSDK版本,并告诉我们有关您的操作系统和环境的更多信息。