4 существенных различия между таблицами кучи и кластеризованными таблицами в SQL Server

Поделись сейчас:

В следующей статье объясняются ключевые различия между таблицами кучи и кластеризованными таблицами.

При работе с таблицами в SQL Server, пользователи часто сталкиваются с дилеммой: использовать кластеризованные таблицы или таблицы кучи. Таблицы, которые не имеют кластеризованных индексов, называются таблицами кучи, а те, которые имеют кластеризованные индексы, называются кластеризованными таблицами. Кластеризованный индекс в основном переупорядочивает способ физического хранения записей в таблице. Страницы данных содержатся в листовых узлах кластеризованного индекса.

Различия между таблицами кучи и кластеризованными таблицами

В статье эти два типа таблиц рассматриваются более подробно.

Кластеризованные таблицы и таблицы с кучей

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

Ваши физические данные могут стать фрагментированными, если в таблицах ваших данных будет больше действий INSERT, DELETE и UPDATE. Известно, что фрагментированные данные могут увеличить бесполезное и нежелательное пространство, потому что если вы запускаете запрос, он должен прочитать еще несколько страниц, так как теперь есть больше частично заполненных страниц. Давайте выясним, как решить проблему фрагментации данных.

Разница между кучей и кластеризованной таблицей

Проблема фрагментации может быть решена путем определения необходимости наличия кластеризованного индекса в ваших таблицах или нет. В конце концов, именно кластерный индекс или индекс кучи регулирует физическое хранилище вашей таблицы. Любая таблица в вашей базе данных может иметь только один тип индекса. Чтобы сделать выбор, мы должны понимать основные различия между ними, которые заключаются в следующем.

  1. В куче нет порядка хранения данных, но в кластере порядок хранения данных зависит от ключа кластеризованного индекса. 
  2. Страницы данных не связаны в куче, тогда как в кластеризованной таблице они связаны, и последовательный доступ осуществляется быстрее.
  3. Куча имеет значение index_id 0, а Clustered имеет значение index_id 1 для представления каталога sys.indexes.
  4. Кластерный индекс извлекает данные быстрее, чем таблица кучи, поскольку есть ключ кластерного индекса.

Фрагментация

Основываясь на различиях между Clustered Tables и Heap Tables, можно решить проблему фрагментации. Фрагментация происходит из-за использования действий INSERT, DELETE и UPDATE. Однако, если у вас есть таблица кучи и есть только активность INSERT, фрагментации не произойдет. Если вы используете ключ последовательного индекса (Identity Value) и имеете только INSERTS, то ваш кластеризованный индекс не будет фрагментирован. Но если вы используете много INSERTS или DELETES, таблицы станут фрагментированными.

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

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

Инвестирование в SQL Server ремонт инструмент является обязательным для компаний, которые используют MS SQL Server базы данных на своих производственных серверах. На самом деле это может оказаться спасением в случае сбоя базы данных.

Об авторе:

Виктор Саймон — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая ремонт мдб и программные продукты для восстановления sql. Для получения дополнительной информации посетите https://www.datanumen.com/

Поделись сейчас:

Один ответ на «4 существенных различия между таблицами кучи и кластеризованными таблицами в SQL Server

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *