JET_SPACEHINTS 结构
适用于: Windows |Windows Server
JET_SPACEHINTS 结构
当 b 树通过追加或热点拆分增长时, JET_SPACEHINTS 结构包含有关空间分配模式的信息。 将记录添加到 b 树的末尾时,会发生追加拆分;将多个记录添加到同一个虚拟插入点时会发生热点拆分 (例如,将“Marie”、“Mark”、“Martin”、“Mary”添加到按字母顺序) 排序的 b 树中间。
Windows 7: windows 7 中引入了 JET_SPACEHINTS 结构。
typedef struct tagJET_SPACEHINTS {
unsigned long cbStruct;
unsigned long ulInitialDensity;
unsigned long cbInitial;
JET_GRBIT grbit;
unsigned long ulMaintDensity;
unsigned long ulGrowth;
unsigned long cbMinExtent;
unsigned long cbMaxExtent;
} JET_SPACEHINTS;
成员
cbStruct
此结构的大小(以字节为单位)。 将此成员设置为 sizeof ( JET_SPACEHINTS ) 。
ulInitialDensity
追加) 布局 (密度。
cbInitial
正在创建的对象) 初始大小 (字节数。 这必须是数据库页大小的倍数。
grbit
一组位,其中包含要用于此结构的选项,其中包括以下零个或多个内容。
值 |
含义 |
---|---|
JET_bitSpaceHintsUtilizeParentSpace |
更改内部分配策略,以从 b 树的直接父级获取空间。 |
JET_bitCreateHintAppendSequential |
允许追加拆分行为根据 cbMinExtent、ulGrowth、cbMaxExtent) 设置的表 (增长动态进行增长。 |
JET_bitCreateHintHotpointSequential |
允许热点拆分行为根据 cbMinExtent、ulGrowth、cbMaxExtent) 设置的表 (增长动态增长。 |
JET_bitRetrieveHintTableScanForward |
如果设置,客户端会指示向前顺序扫描是此表的主要使用模式。 |
JET_bitRetrieveHintTableScanBackward |
如果设置,客户端指示向后顺序扫描是此表的主要使用模式。 |
JET_bitDeleteHintTableSequential |
如果设置,应用程序希望按顺序(从最低键到最高键)清理此表。 |
ulMaintDensity
density to mulMaintDensity
要维持的密度。 如果空格提示指定JET_bitRetrieveHintTableScanForward或JET_bitRetrieveHintTableScanBackward,则当表中已用空间低于此阈值时,将触发表碎片整理。 可以通过将此成员设置为零来禁用表碎片整理。 将此成员设置为 100 将导致表碎片整理在页面释放后立即运行。
ulGrowth
从上次增长或初始大小开始的百分比增长,舍入到最接近的本机 JET 分配大小。
cbMinExtent 太小
如果过小,这将替代 ulGrowth。
cbMaxExtent
增长的最大值(以字节为单位)。 此上限为 ulGrowth。
当 b 树通过追加或热点拆分(而不是随机记录插入) ) (增长时,表将增长的空间量计算如下:
在创建时,我们始终为 b 树 cbInitial 提供 。
在给定区域的第一次分配期间,我们将分配:cbInitial * ulGrowth / 100 (舍入为 DB 的页大小) ,或 cbMinExtent(如果更大)。
在下一次分配期间,cbLastAlloc * ulGrowth / 100 (舍入到 DB) 的页大小;如果更大,则为 cbMinExtent。
在某些分配 ((可能是第一个分配) ),计算的大小将超过 cbMaxExtent,之后将是增长大小。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 专业版。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |