Бөлісу құралы:


Таблицы

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Таблицы являются объектами, которые содержат все данные в базах данных. В таблицах данные логически организованы в виде строк и столбцов по аналогии с электронной таблицей. Каждая строка представляет собой уникальную запись, а каждый столбец — поле записи. Например, таблица, содержащая данные о сотрудниках компании, может иметь строку для каждого сотрудника и столбцы, представляющие сведения о сотрудниках (например, его идентификационный номер, имя, адрес, должность и номер домашнего телефона).

  • Число таблиц в базе данных ограничено только числом объектов доступных в базе данных (2 147 483 647). Стандартная определяемая пользователем таблица может содержать до 1 024 столбцов. Число строк и общий размер таблицы ограничиваются только пространством для хранения на сервере.

  • Можно также устанавливать свойства для таблицы и каждого столбца в таблице для управления допустимыми данными и другими свойствами. Например, можно задать ограничения на столбец, чтобы в нем не допускались значения NULL, или указать значение по умолчанию, если оно не задано. Также можно присвоить ограничения ключа на таблицу, который обеспечивает уникальность, или установить связи между таблицами.

  • Данные в таблице могут быть сжаты либо по строкам, либо по страницам. Сжатие данных может позволить отображать больше строк на странице. Дополнительные сведения см. в разделе Data Compression.

Типы таблиц

Помимо стандартной роли базовых пользовательских таблиц SQL Server предоставляет следующие типы таблиц, которые служат специальным целям в базе данных.

Секционированные таблицы

Секционированные таблицы — это таблицы, данные которых горизонтально разделены на блоки, которые могут быть распределены между несколькими файловыми группами в базе данных. Секционирование делает большие таблицы и индексы более управляемыми, позволяет быстро и эффективно получать доступ к наборам данных и управлять ими, при этом сохраняя целостность всей коллекции. По умолчанию SQL Server поддерживает до 15 000 секций. Дополнительные сведения см. в разделе Partitioned Tables and Indexes.

Временные таблицы

Темпоральные таблицы хранятся в базе данных tempdb. Существует два вида временных таблиц: локальные и глобальные. Они отличаются друг от друга именами, видимостью и доступностью. Локальные временные таблицы имеют знак единого номера (#) в качестве первого символа их имен; Они видны только текущему подключению для пользователя, и они удаляются при отключении пользователя от экземпляра SQL Server. Глобальные временные таблицы имеют два знака числа (##) в качестве первых символов их имен; они видны любому пользователю после создания, и они удаляются, когда все пользователи ссылаются на таблицу отключается от экземпляра SQL Server.

Сокращение повторных компиляций для рабочих нагрузок с использованием темпоральных таблиц в нескольких областях.

SQL Server 2019 (15.x) на всех уровнях совместимости базы данных сокращает количество перекомпиляций для рабочих нагрузок с помощью временных таблиц в нескольких областях. Эта функция также включена в базе данных SQL Azure на уровне совместимости базы данных 150 для всех моделей развертывания. До этого выпуска при ссылке на временную таблицу в инструкции на языке обработки данных DML (SELECT, INSERT, UPDATE, DELETE), если таблица была создана пакетом во внешней области, происходила повторная компиляция инструкции DML при каждом выполнении. В рамках этого улучшения SQL Server выполняет дополнительные упрощенные проверки, чтобы избежать ненужных перекомпиляций:

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

Конечным результатом является снижение числа лишних перекомпиляций и нагрузки на ЦП.

Системные таблицы

SQL Server хранит данные, определяющие конфигурацию сервера и все ее таблицы в специальном наборе таблиц, известных как системные таблицы. Пользователи не могут напрямую выполнить запрос или обновление системных таблиц. Данные из системных таблиц доступны через системные представления. Дополнительные сведения см. в разделе "Системные представления" (Transact-SQL).

Широкие таблицы

В широких таблицах используются разреженные столбцы , что позволяет увеличить общее количество столбцов в таблице до 30 000. Разреженные столбцы — это обычные столбцы, имеющие оптимизированное хранилище для значений NULL. Разреженные столбцы уменьшают пространство, необходимое для хранения значений NULL, однако увеличивается стоимость получения значений, отличных от NULL. В широкой таблице определен набор столбцов, который представляет собой нетипизированное XML-представление, в котором все разреженные столбцы таблицы объединены в структурированные выходные данные. Количество индексов и статистик также увеличивается до 1000 и 30 000 соответственно. Максимальный размер строки широкой таблицы — 8 019 байт. Таким образом, большинство данных в любой строке должны составлять значения NULL. Максимальным числом неразряженных и вычисляемых столбцов в широкой таблице остается 1024.

Широкие таблицы влияют на производительность следующим образом.

  • Широкие таблицы увеличивают затраты на обслуживание индексов для таблицы. Рекомендуется ограничить количество индексов широкой таблицы только теми, которые необходимы для бизнес-логики. С ростом числа индексов возрастает время компиляции DML и требования к памяти. Некластеризованные индексы должны быть отфильтрованными индексами, применяющимися к подмножествам данных. Дополнительные сведения см. в разделе Create Filtered Indexes.

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

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

  • В широкой таблице следует ограничить выполнение инструкций DML, обновляющих несколько строк ключа кластеризации. Для компиляции и выполнения этих инструкций может потребоваться значительный объем ресурсов.

  • Операции по переключению секций в широких таблицах могут выполняться медленно. Для их выполнения может потребоваться значительный объем памяти. Требования к производительности и памяти пропорциональны общему количеству столбцов в исходной и целевой секциях.

  • Курсоры обновления, обновляющие определенные столбцы в широкой таблице, должны явно перечислять столбцы в предложении FOR UPDATE. Это поможет оптимизировать производительность при использовании курсоров.

Обобщенные табличные задачи

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

Табличные задачи Раздел
Описание процесса создания таблицы. Создание таблиц (ядро СУБД)
Описание процесса удаления таблицы. Удаление таблиц (ядро СУБД)
Описание способов создания новой таблицы, которая содержит несколько или все столбцы существующей таблицы. Дублирование таблиц
Описывает процесс переименования таблицы. Переименование таблиц (ядро СУБД)
Описание процесса просмотра свойств таблицы. Просмотр определения таблицы
Описывает, как определить, находятся ли в зависимости от таблицы другие объекты, например представление или хранимая процедура. Просмотр зависимостей таблицы

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

Задачи столбца Раздел
Описывает добавление столбцов в существующую таблицу. Добавление столбцов в таблицу (ядро СУБД)
Описывает процесс удаления столбца из таблицы. Удаление столбцов из таблицы
Описывает изменение имени столбца. Переименование столбцов (ядро СУБД)
Описывает копирование столбцов из одной таблицы в другую, когда копируется либо только определение столбца, либо определение и данные. Копирование столбцов из одной таблицы в другую (ядро СУБД)
Описывает изменение описания столбца путем изменения типа данных или другого свойства. Изменение столбцов (ядро СУБД)
Описывает изменение порядка, в котором отображаются столбцы. Изменение порядка столбцов в таблице
Описывает создание вычисляемого столбца в таблице. Указание вычисляемых столбцов в таблице
Описывает, как установить значение по умолчанию для столбца. Это значение используется, если другое значение не предоставлено. Указание значений по умолчанию для столбцов

См. также

Ограничения уникальности и проверочные ограниченияОграничения первичных и внешних ключей