Microsoft SQL Server – это система управления реляционными базами данных (RDBMS), которая хранит данные в таблицах. Таблицы являются основными объектами базы данных, которые организуют данные в строках и столбцах. Каждая строка представляет сущность, описываемую столбцами, которые содержат атрибуты сущности. Например, таблица клиентов содержит одну строку для каждого клиента, с такими столбцами, как ИмяКлиента и АдресКлиента.
Таблицы в SQL Server могут использоваться в качестве границ безопасности, где разрешения могут быть предоставлены на уровне таблицы. Они также содержатся в схемах, которые выступают в качестве контейнеров для таблиц и обеспечивают дополнительные границы безопасности.
При проектировании таблицы важно учитывать свойства, назначенные таблице и ее столбцам. Эти свойства контролируют разрешенные типы данных и диапазоны данных, которые может принимать таблица. Правильное проектирование таблицы может улучшить производительность хранения и извлечения данных.
В дополнение к определенным пользователем таблицам, SQL Server предоставляет специальные типы таблиц. Временные таблицы, хранящиеся в системной базе данных tempdb, могут быть локальными или глобальными и используются для временного хранения данных. Широкие таблицы используют разреженные столбцы для оптимизации хранения значений NULL и позволяют использовать до 30 тысяч столбцов. Системные таблицы хранят информацию о конфигурациях и объектах экземпляра SQL Server и могут быть запрошены с использованием системных представлений. Разделенные таблицы горизонтально разделяют данные на отдельные блоки на основе определенного ключа для улучшения производительности извлечения данных.
Физически таблицы SQL Server хранятся в виде набора страниц размером 8 КБ. По умолчанию таблицы хранятся в одном разделе в основной группе файлов PRIMARY. Однако таблицы также могут храниться в нескольких разделах на основе определенного столбца. Каждый раздел таблицы содержит строки данных в структуре кучи или кластеризованного индекса, управляемых в блоках выделения на основе типов данных каждого столбца.
Таблица кучи – это таблица без кластеризованного индекса, где строки данных не хранятся в каком-либо определенном порядке внутри каждой страницы данных. Порядок данных не может быть предсказан, и порядок возвращаемых строк может быть обеспечен только с использованием оператора ORDER BY в операторе SELECT. Таблицы кучи используют карту выделения индекса (IAM) для отслеживания выделения страниц данных.
С другой стороны, кластеризованная таблица имеет предопределенный кластеризованный индекс, который определяет порядок хранения строк внутри страниц данных и порядок страниц внутри таблицы. На каждую таблицу может быть определен только один кластеризованный индекс. Кластеризованные таблицы используют структуру B-дерева с одним B-деревом на каждый раздел, обеспечивая быструю навигацию по данным на основе значений ключей кластеризованного индекса.
Важно отметить, что физический порядок страниц кластеризованного индекса не всегда соответствует логическому порядку из-за модификаций данных и фрагментации. Чтобы избежать проблем с производительностью, таблицы могут быть спроектированы с внутренней логикой упорядочивания, преобразовав их из таблиц кучи в кластеризованные таблицы.
В заключение, понимание структуры и типов таблиц в SQL Server является важным для эффективного хранения и извлечения данных. Правильное проектирование таблицы и использование индексов могут значительно улучшить производительность базы данных. В следующей статье мы рассмотрим основные концепции индексов SQL Server.