Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
module 3 Create Table.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
112 Кб
Скачать
☆

Удаление таблиц

Удаление таблиц производится командой DROP TABLE. Любое представление или хранимая процедура, ссылающаяся на удаленную таблицу, должна быть явно удалена с помощью инструкции DROP. Получить отчет о зависимостях в таблице можно с помощью sys.dm_sql_referencing_entities.

DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]

table_name [ ,...n ]

database_name

Имя базы данных, в которой создана таблица.

schema_name

Имя схемы, которой принадлежит таблица.

table_name

Имя таблицы, предназначенной для удаления.

Инструкцию DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY. Сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу. Если и ссылающаяся таблица, и таблица, содержащая первичный ключ, удаляются с помощью одной инструкции DROP TABLE, ссылающаяся таблица должна быть первой в списке.

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

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

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

Пример:

Следующий пример удаляет таблицу ProductVendor из текущей базы данных.

DROP TABLE simpleTable;

Урок 3: Горизонтальное секционирование таблиц

В рамках этого урока будут рассмотрены следующие вопросы

  • Для чего используется горизонтальное секционирование таблиц?

  • Как создать функцию секционирования?

  • Как создать схему секционирования?

  • Как создать секционированную таблицу?

Архитектура секционирования

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

Рационально было бы разделить все данные такой таблицы на поднаборы, не разделяя саму таблицу. Это разбиение позволило бы быстро и эффективно получать доступ к отдельным поднаборам данных и управлять ими, при этом сохраняя целостность всей коллекции. Операции обслуживания, выполняемые на поднаборах данных, также выполнялись бы значительно эффективнее, так как нацелены только на те данные, которые действительно необходимы, а не на всю таблицу.

Microsoft SQL Server поддерживает такое физическое разделение данных таблицы, без разделения логической таблицы - такие таблицы называются секционированными. Данные секционированных таблиц подразделяются на блоки, которые могут быть распределены по нескольким файловым группам в базе данных. Данные секционируются горизонтально, поэтому группы строк сопоставляются с отдельными секциями. Таблица или индекс рассматриваются как единая логическая сущность при выполнении над данными запросов или обновлений. Все секции одного индекса или таблицы должны находиться в одной и той же базе данных (секционированные таблицы и индексы поддерживаются только в выпусках Enterprise и Developer).

Microsoft SQL Server R2 поддерживает до 15000 секций для каждой таблицы или индекса, в то время как предыдущие версии поддерживали до 1000.

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

Решение, стоит ли применять секционирование, в основном зависит от того, насколько велика таблица или насколько она может увеличиться, как она используется и насколько эффективно отвечает на пользовательские запросы и операции обслуживания.

Например, если текущий год используется, в основном, для операций INSERT, UPDATE и DELETE, в то время как предыдущие годы используются, в основном, для запросов SELECT, работа с этой таблицей может быть упрощена, если таблица секционирована на годы. Это особенно удобно, если операции регулярного обслуживания таблицы нацелены только на некоторый поднабор данных. Если таблица не секционирована, выполнение таких операций требует большого количества ресурсов и задействует весь набор данных. Когда применяется секционирование, такие операции обслуживания, как перестроение индекса и дефрагментация, можно выполнять, например, только для одного года и данных, доступных для записи, сохраняя оперативный доступ к данным, доступным только для чтения.

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

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

Чтобы создать секционированную таблицу, необходимо выполнить следующие шаги:

  1. Создать функцию секционирования, чтобы указать, каким образом таблица будет секционирована.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]