Справка по подсчету сегментов при создании таблицы в памяти в SQL Server 2016 - PullRequest
1 голос
/ 10 апреля 2019

У меня есть бизнес, который нужно запускать ежедневно и который будет влиять на все строки в таблицах. Как только запись исправлена ​​и не может измениться по логике, она перемещается в таблицу на диске. В максимуме будет около 30 миллионов строк в таблице. Это очень тощий, только элементы привязки к главной таблице и ключ к таблице флагов. Ключ флага - это то, что будет обновлено.

У меня вопрос, когда я готовлю таблицу такого размера, какой размер сегмента я должен использовать для индекса?

Таблица начнется с небольшого размера, вероятно, всего в несколько сотен тысяч строк в апреле, но к концу финансового года она вырастет до максимального значения, указанного в предыдущих годах, и я не уверен, что это практически пустое ведро в начале будет иметь какие-либо проблемы или, если это нормально, счет на отметке 30 миллионов.

Заранее благодарим вас за комментарии, предложения и помощь.

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

CREATE TABLE [PRD].[CTRL_IN_MEM]
(
    [FILE_LOAD_ID] INT NOT NULL,
    [RECORD_IDENTIFIER] BIGINT NOT NULL,
    [FLAG_KEY] SMALLINT NOT NULL,
    [APP_LEVEL_PART] BIT NOT NULL

--Line I'm not sure about
    CONSTRAINT [pk_CTRL_IN_MEM] PRIMARY KEY NONCLUSTERED HASH ([FILE_LOAD_ID], [RECORD_IDENTIFIER]) WITH (BUCKET_COUNT = 30000000),
    INDEX cci_CTRL_IN_MEM CLUSTERED COLUMNSTORE

) WITH (MEMORY_OPTIMIZED = ON, DURABILITY=SCHEMA_AND_DATA)
...