Spec-Zone .ru
спецификации, руководства, описания, API
|
Когда Вы усекаете таблицу, которая
сохранена в a .ibd
собственный файл (потому что innodb_file_per_table
был включен, когда таблица была составлена), и если на таблицу не ссылаются в a FOREIGN
KEY
ограничение, таблица отбрасывается и воссоздается в новом .ibd
файл.
Эта работа намного быстрее чем удаление строк один за другим. Операционная система может снова использовать
дисковое пространство, в отличие от таблиц в пределах системной табличной
области InnoDB, где только InnoDB может использовать пространство после того, как они являются
усеченными. Физические
резервные копии могут также быть меньшими без больших блоков неиспользуемого места в середине системной
табличной области.
MySQL 5.1 и ранее снова использовал бы существующее .ibd
файл, таким образом
освобождая пространство только к InnoDB для управления хранением, но не к операционной системе. Отметьте это,
когда таблица является усеченной, количество строк, на которые влияют TRUNCATE
TABLE
оператор является произвольным числом.
Если есть ограничение внешнего ключа между двумя столбцами в той же самой таблице, та таблица может все еще быть усеченным использованием этого быстрого метода.
Если есть ограничения внешнего ключа между таблицей, являющейся усеченными и другими таблицами,
усеченными сбоями работы. Это - изменение к предыдущему поведению, которое преобразовало бы TRUNCATE
работа к a DELETE
работа, которая
удалила все строки и инициировала ON DELETE
операции на дочерних
таблицах.