Хранение таблицы innodb в отдельном файле в MySQL

Категория: db

По умолчанию, при создании таблиц в версиях сервера mysql<5.5 все таблицы хранятся в одном файле ibdata1. Очевидно, при возрастании количества данных, объем данного файла становится непреемлимо большим, что в конечном итоге сказывается на скорости выполнения запросов. К счастью в сервере есть опция, которая позволяет размещать табличные пространства в отдельных tbl_name.ibd файлах. И так, добавляем в конфигурацию сервера опцию:

[mysqld]
innodb_file_per_table=1

И перезагружаем процесс на сервере. Или же это можно сделать на "лету" без перезагрузки сервера:

SET GLOBAL innodb_file_per_table=1;

После этого вновь созданные таблицы, будут размещаться в отдельных файлах. Чтобы применить сабж к существующим таблицам (с сохранением данных), необходимо выполнить SQL-запрос:

ALTER TABLE `table_name` ENGINE=InnoDB;

P.S. К сожалению, после переноса табличного пространства в файлы, на сколько я знаю, нет способа уменьшить размер файла ibdata1 (сделать аналог вакуумизации в postgres) - его просто можно будет удалить после переноса всех таблиц.

Теги: mysql innodb_file_per_table innobd ibdata1

Комментарий:

Powered by emlog