Хранение таблицы 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
Показать SQL запрос CREATE TABLE для таблицы в phpmyadmin | MySQL
Категория: db
Для генерации sql запроса создания какой либо таблицы удобно использовать пару способов:
1) Делаем экспорт таблицы в формате SQL , скачиваем, и далее открываем получившийся файлик в текстовом редакторе - в нем содержится необходимый запрос.
2) Просто делаем SQL-запрос (вкладка SQL вверху окна):
SHOW CREATE TABLE `table_name`
Далее, для полного отображения результата, нажимаем по ссылке "версия для печати"
При необходимости получивщийся SQL запрос можно дополнить проверкой на существование одноименной таблицы - в этом случае, можно избежать получения сообщения об ошибки:
CREATE TABLE IF not EXISTS `table_name` ( `id` int ......
Теги: sql mysql bd create table phpmyqdmin