17.11.5 Освобождение дискового пространства с помощью TRUNCATE TABLE
Для освобождения дискового пространства операционной системы при использовании таблицы InnoDB, таблица должна храниться в отдельном файле. Для того, чтобы таблица хранилась в отдельном файле, необходимо включить innodb_file_per_table при её создании. Кроме того, не должно быть ограничений между таблицей, которую нужно обнулить, и другими таблицами, иначе операция TRUNCATE TABLE завершается неудачно. Однако разрешается внешнее ключевое ограничение между двумя столбцами в одной и той же таблице.
При обнулении таблицы она удаляется и воссоздаётся в новом файле .ibd, а освобождённое пространство возвращается операционной системе. Это отличается от обнуления таблиц InnoDB, которые хранятся внутри InnoDB (таблицы, созданные при innodb_file_per_table=OFF), и таблиц, хранящихся в общем пространстве, где только InnoDB могут использовать освобождённое пространство после обнуления таблицы.
Возможность обнулять таблицы и возвращать дисковое пространство операционной системе также означает, что размер может быть меньше. Обнуление таблиц, хранящихся в системном табличном пространстве (таблицы, созданные при innodb_file_per_table=OFF) или в общем табличном пространстве, оставляет блоки неиспользуемого пространства в табличном пространстве.
© 2025 Oracle
Licensed under the GPLv2 License.