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
обходит метод удаления данных DML. Таким образом, это
TABLE
не вызывает срабатывание триггеров 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
записи хэш-индекса.