Sql truncate table: TRUNCATE TABLE (Transact-SQL) — SQL Server

MySQL :: Справочное руководство по MySQL 8.0 :: 13.1.37 Оператор TRUNCATE TABLE

13.1.37 Оператор TRUNCATE TABLE

 TRUNCATE [TABLE]  имя_таблицы  

TRUNCATE TABLE очищает таблицу
полностью. Требуется DROP
привилегия. Логически, TRUNCATE
ТАБЛИЦА
похожа на
DELETE оператор, удаляющий все
строки или последовательность DROP TABLE
и CREATE TABLE инструкций.

Для достижения высокой производительности TRUNCATE
TABLE
обходит метод удаления данных DML. Таким образом, это
не вызывает срабатывание триггеров ON DELETE , это
не может быть выполнено для таблиц InnoDB с
отношения родительского-дочернего внешнего ключа, и его нельзя свернуть
назад, как операция DML. Однако ОТРЕЗАТЬ
ТАБЛИЦА
операций над таблицами, использующими атомарный
Механизм хранения с поддержкой DDL либо полностью зафиксирован, либо свернут
назад, если сервер останавливается во время их работы. Для большего
информацию см. в разделе 13.1.1, «Поддержка оператора определения атомарных данных».

Хотя TRUNCATE TABLE аналогичен
на УДАЛИТЬ , он классифицируется как
Оператор DDL, а не оператор DML. Он отличается от
УДАЛИТЬ следующими способами:

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

  • Операции усечения вызывают неявную фиксацию и поэтому не могут быть
    откат. См. Раздел 13.3.3, «Утверждения, вызывающие неявную фиксацию».

  • Операции усечения не могут быть выполнены, если сеанс удерживается
    активная блокировка таблицы.

  • TRUNCATE TABLE не удается
    Таблица InnoDB или
    NDB стол если есть
    FOREIGN KEY ограничения из других таблиц
    которые ссылаются на таблицу. Ограничения внешнего ключа между
    столбцы одной и той же таблицы разрешены.

  • Операции усечения не возвращают значимого значения для
    количество удаленных строк. Обычный результат: «0 строк
    пострадавших», что следует интерпретировать как «нет
    Информация.»

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

  • Любое значение AUTO_INCREMENT сбрасывается до его
    начальное значение. Это верно даже для MyISAM
    и InnoDB , которые обычно не используют повторно
    значения последовательности.

  • При использовании с секционированными таблицами
    TRUNCATE TABLE сохраняет
    разделение; то есть файлы данных и индекса удаляются
    и воссоздан, в то время как определения разделов
    незатронутый.

  • Оператор TRUNCATE TABLE
    не вызывает триггеры ON DELETE .

  • Усечение поврежденной таблицы InnoDB
    поддерживается.

TRUNCATE TABLE обрабатывается для
для целей двоичного ведения журнала и репликации как DDL, а не DML,
и всегда регистрируется как оператор.

ОТРЕЗАТЬ ТАБЛИЦУ для закрытия таблицы
все обработчики для таблицы, которые были открыты с помощью
ОБРАБОТЧИК ОТКРЫТ .

В MySQL 5.7 и более ранних версиях в системе с большим пулом буферов и
innodb_adaptive_hash_index
включена, операция TRUNCATE TABLE может вызвать
временное падение производительности системы из-за сканирования LRU, которое
произошло при удалении записей адаптивного хеш-индекса таблицы
(Ошибка № 68184). Переназначение TRUNCATE
ТАБЛИЦА 9от 0011 до DROP TABLE и
CREATE TABLE в MySQL 8.0 позволяет избежать
проблемное сканирование LRU.

TRUNCATE TABLE можно использовать с
Сводные таблицы схемы производительности, но эффект заключается в сбросе
сводные столбцы в 0 или NULL , не удалять
ряды. См. Раздел 27.12.20, «Сводные таблицы схемы производительности».

Усечение таблицы InnoDB , которая находится в
табличное пространство file-per-table удаляет существующее табличное пространство и
создает новый. Начиная с MySQL 8.0.21, если табличное пространство было
создан в более ранней версии и находится в неизвестном
каталог, InnoDB создает новое табличное пространство в
расположение по умолчанию и пишет следующее предупреждение об ошибке
log: расположение DATA DIRECTORY должно быть в известном
каталог. Местоположение DATA DIRECTORY будет игнорироваться, а
файл будет помещен в каталог данных по умолчанию.
Известные каталоги — это каталоги, определенные
каталог данных ,
innodb_data_home_dir и
innodb_directories переменных. К
TRUNCATE TABLE создать
табличное пространство в его текущем местоположении, добавьте каталог в
innodb_directories настройка до
работает TRUNCATE TABLE .

MySQL :: Справочное руководство по MySQL 5.7 :: 13.1.34 Оператор TRUNCATE TABLE

13.1.34 Оператор TRUNCATE TABLE

 TRUNCATE [TABLE]  tbl_name  

TRUNCATE TABLE очищает таблицу
полностью. Требуется DROP
привилегия.

Логически, TRUNCATE TABLE
аналогично оператору DELETE , который
удаляет все строки или последовательность DROP
ТАБЛИЦА
и СОЗДАТЬ ТАБЛИЦУ
заявления. Для достижения высокой производительности он обходит DML
метод удаления данных. Таким образом, его нельзя откатить, он
не вызывать срабатывание триггеров ON DELETE , и это
не может быть выполнено для таблиц InnoDB с
отношения родительского-дочернего внешнего ключа.

Хотя TRUNCATE TABLE аналогичен
на УДАЛИТЬ , он классифицируется как
Оператор DDL, а не оператор DML. Он отличается от
УДАЛИТЬ следующими способами:

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

  • Операции усечения вызывают неявную фиксацию и поэтому не могут быть
    откат. См. Раздел 13.3.3, «Утверждения, вызывающие неявную фиксацию».

  • Операции усечения не могут быть выполнены, если сеанс удерживается
    активная блокировка таблицы.

  • TRUNCATE TABLE не удается
    Таблица InnoDB или
    NDB стол если есть
    FOREIGN KEY ограничения из других таблиц
    которые ссылаются на таблицу. Ограничения внешнего ключа между
    столбцы одной и той же таблицы разрешены.

  • Операции усечения не возвращают значимого значения для
    количество удаленных строк. Обычный результат: «0 строк
    пострадавших», что следует интерпретировать как «нет
    Информация."

  • Пока файл формата таблицы
    имя_таблицы .frm
    действительна, таблица может быть воссоздана как пустая таблица с
    TRUNCATE TABLE , даже если
    файлы данных или индекса повреждены.

  • Любое значение AUTO_INCREMENT сбрасывается до его
    начальное значение. Это верно даже для MyISAM
    и InnoDB , которые обычно не используют повторно
    значения последовательности.

  • При использовании с секционированными таблицами
    TRUNCATE TABLE сохраняет
    разделение; то есть файлы данных и индекса удаляются
    и воссоздан, в то время как определения разделов
    ( .par ) не затрагивается.

  • Оператор TRUNCATE TABLE
    не вызывает триггеры ON DELETE .

TRUNCATE TABLE обрабатывается для
для целей двоичного ведения журнала и репликации как DDL, а не DML,
и всегда регистрируется как оператор.

TRUNCATE TABLE для закрытия таблицы
все обработчики для таблицы, которые были открыты с помощью
ОБРАБОТЧИК ОТКРЫТ .

В системе с большим буферным пулом InnoDB и
innodb_adaptive_hash_index
включен, TRUNCATE TABLE операции могут вызвать
временное падение производительности системы из-за сканирования LRU, которое
происходит при удалении адаптивной таблицы InnoDB
записи хэш-индекса.