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。 |