Почему максимально допустимый размер объединенных значений индекса составляет 900 байтов для кластеризованного индекса? - PullRequest
0 голосов
/ 23 марта 2020

Я хочу знать причину, по которой SQL ограничивает размер объединенного сервера ограниченным размером до 900 (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15) байтов.

1 Ответ

0 голосов
/ 23 марта 2020

Чтобы полностью понять это, вам нужно погрузиться в структуру SQL страниц данных сервера и представления индекса. Вот два места для начала: страницы и индексы .

Позвольте мне, однако, дать вам идею. Базы данных хранят данные на «страницах». Это фиксированный объем памяти, который на SQL сервере составляет 8 192 байта. И данные, и индексы хранятся на одних и тех же страницах. Это большая помощь в управлении третичным хранилищем. Важной, незамеченной частью любой системы баз данных является система управления страницами.

На странице индекса необходимо хранить различную информацию:

  • Заголовок заголовка страницы.
  • Индексный ключ «разделяет» значения.
  • Ссылки либо на большее количество страниц индекса, либо на строки на страницах данных.

Требуется хотя бы одно значение «разбиение». Очевидно, что индексный ключ должен быть менее 8192 байт. SQL Сервер допускает более чем «разделенное» значение на страницу индекса. Точная длина определяется простой арифметикой c на том, что хранится на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...