Spec-Zone .ru
спецификации, руководства, описания, API

14.2.5.6. TRUNCATE TABLE Исправляет Пространство

Когда Вы усекаете таблицу, которая сохранена в a .ibd собственный файл (потому что innodb_file_per_table был включен, когда таблица была составлена), и если на таблицу не ссылаются в a FOREIGN KEY ограничение, таблица отбрасывается и воссоздается в новом .ibd файл. Эта работа намного быстрее чем удаление строк один за другим. Операционная система может снова использовать дисковое пространство, в отличие от таблиц в пределах системной табличной области InnoDB, где только InnoDB может использовать пространство после того, как они являются усеченными. Физические резервные копии могут также быть меньшими без больших блоков неиспользуемого места в середине системной табличной области.

MySQL 5.1 и ранее снова использовал бы существующее .ibd файл, таким образом освобождая пространство только к InnoDB для управления хранением, но не к операционной системе. Отметьте это, когда таблица является усеченной, количество строк, на которые влияют TRUNCATE TABLE оператор является произвольным числом.

Отметить

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

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