Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Конечная точка аналитики SQL в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Таблицы являются объектами, которые содержат все данные в базах данных. В таблицах данные логически организованы в виде строк и столбцов по аналогии с электронной таблицей. Каждая строка представляет собой уникальную запись, а каждый столбец — поле записи. Например, таблица, содержащая данные о сотрудниках компании, может иметь строку для каждого сотрудника и столбцы, представляющие сведения о сотрудниках (например, его идентификационный номер, имя, адрес, должность и номер домашнего телефона).
Число таблиц в базе данных ограничено только числом объектов доступных в базе данных (2 147 483 647). Стандартная определяемая пользователем таблица может содержать до 1 024 столбцов. Число строк и общий размер таблицы ограничиваются только пространством для хранения на сервере.
Можно также устанавливать свойства для таблицы и каждого столбца в таблице для управления допустимыми данными и другими свойствами. Например, можно задать ограничения на столбец, чтобы в нем не допускались значения NULL, или указать значение по умолчанию, если оно не задано. Также можно присвоить ограничения ключа на таблицу, который обеспечивает уникальность, или установить связи между таблицами.
Данные в таблице могут быть сжаты либо по строкам, либо по страницам. Сжатие данных может позволить отображать больше строк на странице. Дополнительные сведения см. в разделе "Сжатие данных".
Типы таблиц
Помимо стандартной роли базовых пользовательских таблиц SQL Server предоставляет следующие типы таблиц, которые служат специальным целям в базе данных.
Секционированные таблицы
Секционированные таблицы — это таблицы, данные которых по горизонтали разделены на единицы, которые могут распределяться по нескольким файловым группам в базе данных. Секционирование делает большие таблицы и индексы более управляемыми, позволяет быстро и эффективно получать доступ к наборам данных и управлять ими, при этом сохраняя целостность всей коллекции. По умолчанию SQL Server поддерживает до 15 000 секций. Дополнительные сведения см. в разделах Секционированные таблицы и индексы.
Временные таблицы
Временные таблицы хранятся в tempdb. Существует два типа временных таблиц: локальные и глобальные. Они отличаются друг от друга именами, видимостью и доступностью.
- Локальные временные таблицы, также известные как временные таблицы с областью сеанса, имеют знак единого номера (
#) в качестве первого символа их имен; они видны только текущему подключению для пользователя, и они удаляются при отключении пользователя от экземпляра SQL Server. - Глобальные временные таблицы имеют два знака числа (
##) в качестве первых символов их имен; они видны любому пользователю после их создания, и они удаляются, когда все пользователи ссылаются на таблицу отключаются от экземпляра SQL Server.
В хранилище данных Fabric поддерживаются только временные таблицы с областью сеанса и не затрагиваются указаниями по пути времени.
Сокращение повторных компиляций для рабочих нагрузок с использованием темпоральных таблиц в нескольких областях.
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 и требования к памяти. Некластеризованные индексы должны быть отфильтрованными индексами, применяющимися к подмножествам данных. Дополнительные сведения см. в разделе "Создание отфильтрованные индексы".
Приложения могут динамически добавлять или удалять столбцы из широких таблиц. При добавлении или удалении столбцов скомпилированные планы запросов также становятся недействительными. Рекомендуется разрабатывать приложение с учетом предполагаемой рабочей нагрузки, чтобы изменения в схеме были сведены к минимуму.
Добавление или удаление данных из широкой таблицы может влиять на производительность. Приложения должны быть разработаны для проецируемых рабочих нагрузок, чтобы свести к минимуму изменения данных таблицы.
В широкой таблице следует ограничить выполнение инструкций DML, обновляющих несколько строк ключа кластеризации. Для компиляции и выполнения этих инструкций может потребоваться значительный объем ресурсов.
Операции по переключению секций в широких таблицах могут выполняться медленно. Для их выполнения может потребоваться значительный объем памяти. Требования к производительности и памяти пропорциональны общему количеству столбцов в исходной и целевой секциях.
Курсоры обновления, обновляющие определенные столбцы в широкой таблице, должны явно перечислять столбцы в предложении FOR UPDATE. Это поможет оптимизировать производительность при использовании курсоров.
Обычные задачи работы с таблицей
В следующей таблице приведены ссылки на общие задачи, связанные с созданием или изменением таблицы.
| Задачи для таблицы | Topic |
|---|---|
| Описание процесса создания таблицы. | Создание таблиц (ядро СУБД) |
| Описание процесса удаления таблицы. | Удаление таблиц (ядро СУБД) |
| Описание способов создания новой таблицы, которая содержит несколько или все столбцы существующей таблицы. | Повторяющиеся таблицы |
| Описывает процесс переименования таблицы. | Переименование таблиц (ядро СУБД) |
| Описание процесса просмотра свойств таблицы. | Просмотр определения таблицы |
| Описывает, как определить, находятся ли в зависимости от таблицы другие объекты, например представление или хранимая процедура. | Просмотр зависимостей таблицы |
В следующей таблице приведены ссылки на общие задачи, связанные с созданием или изменением столбца таблицы.
| Задачи столбца | Topic |
|---|---|
| Описывает добавление столбцов в существующую таблицу. | Добавление столбцов в таблицу (ядро СУБД) |
| Описывает процесс удаления столбца из таблицы. | Удаление столбцов из таблицы |
| Описывает изменение имени столбца. | Переименование столбцов (ядро СУБД) |
| Описывает копирование столбцов из одной таблицы в другую, когда копируется либо только определение столбца, либо определение и данные. | Копирование столбцов из одной таблицы в другую (ядро СУБД) |
| Описывает изменение описания столбца путем изменения типа данных или другого свойства. | Изменение столбцов |
| Описывает изменение порядка, в котором отображаются столбцы. | Изменение порядка столбцов в таблице |
| Описывает создание вычисляемого столбца в таблице. | Указание вычисляемых столбцов в таблице |
| Описывает, как установить значение по умолчанию для столбца. Это значение используется, если другое значение не предоставлено. | Указание значений по умолчанию для столбцов |