|
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 операции на дочерних
таблицах.