Поделиться через


Структура JET_SPACEHINTS

Применимо к: Windows | Windows Server

Структура JET_SPACEHINTS

Структура JET_SPACEHINTS содержит сведения о шаблонах распределения пространства, когда b-дерево растет с помощью разбиения добавок или горячих точек. Разбиение добавления происходит при добавлении записей в конец b-дерева, а разделение горячих точек происходит при добавлении нескольких записей в одну виртуальную точку вставки (например, добавление "Marie", "Mark", "Martin", "Mary" в середину B-дерева, отсортированного по алфавиту).

Windows 7: Структура JET_SPACEHINTS представлена в Windows 7.

    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
0x00000001

Изменяет внутреннюю политику выделения, чтобы получить пространство из непосредственного родительского элемента b-дерева.

JET_bitCreateHintAppendSequential
0x00000002

Позволяет увеличивать поведение разделения добавления в соответствии с динамикой роста таблицы (задается cbMinExtent, ulGrowth, cbMaxExtent).

JET_bitCreateHintHotpointSequential
0x00000004

Позволяет увеличивать поведение разделения горячих точек в соответствии с динамикой роста таблицы (задается cbMinExtent, ulGrowth, cbMaxExtent).

JET_bitRetrieveHintTableScanForward
0x00000010

Если этот параметр задан, клиент указывает, что последовательная последовательная проверка является преобладающим шаблоном использования этой таблицы.

JET_bitRetrieveHintTableScanBackward
0x00000020

Если этот параметр задан, клиент указывает, что последовательная проверка в обратном направлении является преобладающим шаблоном использования этой таблицы.

JET_bitDeleteHintTableSequential
0x00000100

Если этот параметр задан, приложение ожидает, что эта таблица будет очищена в последовательном порядке— от самого низкого ключа к самому высокому ключу.

ulMaintDensity

density to mulMaintDensity

Плотность для поддержания. Если указания по пространству указывают JET_bitRetrieveHintTableScanForward или JET_bitRetrieveHintTableScanBackward, дефрагментация таблицы будет активирована, когда используемое пространство в таблице опустится ниже этого порогового значения. Дефрагментацию таблицы можно отключить, задав для этого элемента значение 0. Установка для этого элемента значения 100 приведет к запуску дефрагментации таблицы сразу после освобождения страницы.

UlGrowth

Процент роста от последнего увеличения или начального размера, округленный до ближайшего собственного размера выделения JET.

cbMinExtent слишком маленький

Это переопределяет ulGrowth, если он слишком мал.

cbMaxExtent

Максимальное значение для увеличения в байтах. Это крышки ulGrowth.

Когда b-дерево растет за счет разбиения аппендиций или горячих точек (в отличие от случайных вставок записей), объем пространства, на который будет увеличиваться таблица, вычисляется следующим образом:

  1. При создании мы всегда даем b-tree cbInitial.

  2. При первом выделении заданной области мы выделим: cbInitial * ulGrowth / 100 (округлено до размера страницы базы данных) или cbMinExtent, если больше.

  3. Во время следующего выделения cbLastAlloc * ulGrowth / 100 (округляется до размера страницы базы данных) или cbMinExtent, если больше.

  4. При некотором выделении (которое может быть первым выделением) вычисляемый размер превысит cbMaxExtent, и этот размер будет расти после этого.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Professional.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

См. также:

JET_TABLECREATE2
JET_TABLECREATE3