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