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 服务器 - 数据库管理 » 配置数据库 » 数据库选项 » 数据库选项简介 » 按字母顺序排列的选项列表

 

prefetch 选项 [数据库]

控制在客户端应用程序可以使用行之前是否先将行读取到客户端。

允许值

Off、Conditional、Always

缺省值

Conditional

作用域

可以为单个连接或 PUBLIC 组设置此选项。设置立即生效。

注释

此选项控制在客户端应用程序可以使用行之前,是否先将行读取到客户端。即使在客户端应用程序一次请求一行时(例如,当在游标的行上循环时),也一次读取多行,这样做可通过降低对数据库的请求数量而降低响应时间,并提高总吞吐量。

  • Off 表示不执行预读。

  • Conditional(缺省值)表示执行预读,除非游标类型为 SENSITIVE 或查询包含代理表。

  • Always 表示执行预读,即使游标类型为 SENSITIVE 以及游标涉及代理表。

使用 Always 值必须小心,因为它会影响某些游标语义。例如,它会使敏感游标变得不敏感。如果在预取和应用程序读取请求之间更新了值,则可能读取较旧的值。此外,对涉及代理表的游标使用预读可能会产生错误 -668。如果客户端试图重新读取预读行,则游标被限定于 FETCH NEXT 操作。如果在第一次读取列后首次绑定读取列或重新绑定读取列,或在使用 GET DATA 的某些情况下,客户端可能会试图在回退后或在读取相对位置 0 时重新读取预读行。

值敏感游标类型包括 ESQL SENSITIVE 和 SCROLL 游标类型,及 ODBC 和 OLE DB DYNAMIC 与 KEYSET 游标类型。

prefetch 选项的设置会被 Open Client 和 jConnect 连接忽略。

如果将 DisableMultiRowFetch 连接参数设置为 YES,则会忽略 prefetch 数据库选项,并且不执行任何预读。

此选项以前接受的值为 On。现在此值是 Conditional 的别名。

另请参见