JetPrereadKeys 函数

适用于:Windows |Windows服务器

JetPrereadKeys 函数

JetPrereadKeys 函数读取键值以提高版本存储清理的性能。

Windows 7:Windows 7 中引入了 PrereadKeys 函数。

    JET_ERR JET_API JetPrereadKeys(
      __in JET_SESID sesid,
      __in JET_TABLEID tableid,
      __in_ecount(ckeys) const void ** rgpvKeys,
      __in_ecount(ckeys) const unsigned long * rgcbKeys,
      __in long ckeys,
      __out_opt long * pckeysPreread,
      __in JET_GRBIT grbit
     );

参数

sesid

用于 API 调用的数据库会话上下文。

tableid

要用于此调用的游标。

rgpvKeys

指向键的指针数组。 可以使用 JetMakeKey 进行键,也可以使用 JetGetBookmark 进行检索。 键必须按升序或降序排序,具体取决于传递的 grbit。 可以使用 memcmp 对键进行排序。

rgcbKeys

密钥长度的数组。 rgpvKeys[n] 应指向长度为 rgcbKeys[n] 的密钥

ckeys

键数。 rgpvKeys 和 rgcbKeys 必须每个指向至少具有 ckeys 元素的数组。

pckeysPreread

返回预读实际颁发的密钥数。 此参数可以为 NULL。

grbit

这必须是JET_bitPrereadForward或JET_bitPrereadBackward。 如果 grbit JET_bitPrereadForward,则必须按升序对键进行排序。 如果 grbit JET_bitPrereadBackward,则必须按降序对键进行排序。

返回值

此函数使用以下返回代码之一返回 JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅可扩展存储引擎错误错误处理参数

可以返回各种 I/O 错误以及以下 API 使用错误:

返回代码

描述

JET_errInvalidGrbit

Grbit 既不是JET_bitPrereadForward也不是JET_bitPrereadBackward。

JET_errInvalidBufferSize

传递了不正确的密钥大小。 键既不能大于表的最大密钥长度,也不能超过最大键长度。

JET_errInvalidParameter

传入了无效参数。 这可能是由必需参数的 null 值引起的,也可以指示键数组未正确排序。

JetPrereadKeys 遍历 b 树的内部页,以确定哪些叶页包含 rgpvKeys/rgcbKeys 指定的键。 对叶页列表进行排序,然后针对页面范围发出预读。 可以预读的页数受到限制,因此并非所有键都可以预读。 在这种情况下,实际预读的键数在 pckeysPreread 中返回。

要求

要求

客户端

需要Windows 7。

Server

需要Windows Server 2008 R2。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。