JetPrereadKeys 函数

适用于: Windows |Windows Server

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

格雷比特既不是JET_bitPrereadForward也不是JET_bitPrereadBackward。

JET_errInvalidBufferSize

传入的密钥大小不正确。 键不能为 0,也不能长于表的最大密钥长度。

JET_errInvalidParameter

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

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

要求

要求

客户端

需要 Windows 7。

服务器

需要 Windows Server 2008 R2。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。