Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 配置数据库 » 数据库选项 » 数据库选项简介 » 按字母顺序排列的选项列表

 

max_statement_count 选项 [数据库]

对限制某个连接能同时使用的经过准备的语句数的资源调控器进行控制。

允许值

整数

缺省值

50

作用域

可以为单个连接或 PUBLIC 组设置此选项。设置立即生效。为任何 连接设置此选项,都需要有 DBA 权限。

注释

如果不再需要预准备的语句时它们未能显式删除,则使用预准备语句的应用程序可能接收到错误 [超出 '经过准备的语句数' 的资源调控器]。max_statement_count 数据库选项是一个资源调控器,它允许 DBA 限制每个连接使用的预准备的语句数。如果某个操作超出连接限制,则会生成一个错误,指示超出资源的调控器范围。

如果连接执行一个存储过程,则该过程的执行受过程所有者权限的控制。然而,由该过程所用的资源却被指派给当前连接。

数据库服务器为连接创建的每个预准备语句维护所需的数据结构。只有在应用程序通知数据库服务器不再需要预准备语句或连接断开时才释放这些结构。要减少连接的语句计数,必须执行与 DROP STATEMENT 请求等效的命令。下表列出可针对 SQL Anywhere 支持的 API 执行的命令:

接口 语句
ADO RecordSet.Close
ADO.NET SADataReader.Close 或 SADataReader.Dispose
嵌入式 SQL DROP STATEMENT
Java resultSet.Close、Statement.Close
ODBC SQLFreeStmt(hstmt, SQL_DROP) 或 SQLFreeHandle(SQL_HANDLE_STMT, hstmt)
注意

在 Java 和 .NET 中,建议您显式删除语句。不应依赖垃圾收集来执行此清除任务,因为语言例程不发出服务器调用以释放语句资源。此外,也不能保证垃圾收集例程何时执行。

如果服务器在任一时间对任一连接需要支持的预准备语句数超过缺省值,则应将 max_statement_count 设置为更高的值。但是,请注意,大量的活动预准备语句会消耗更多服务器内存。可以通过将 max_statement_count 选项设置为 0(零)来完全禁用预准备语句资源调控器,但建议不这样做。对于未适当释放预准备语句的应用程序,这样做会使数据库服务器易于因内存不足而关闭。

另请参见