Общие > Базы данных

MySQL - InnoDB

(1/1)

Stek:
Суть вопроса в следующем ...
как известно все таблицы в innodb хранятся в одном файле. Реально все таблицы занимают около 100 мег, соответственно ibdata хранилище занимает столько же.
Теперь удаляем половину таблиц, файл ibdata не уменьшается. Теперь сам вопрос - какая команда уменьшит его, т.е. будет аналогичной optimize table , но только для ibdata хранилища ?

fidget:
> Теперь сам вопрос - какая команда уменьшит его
никакая. Место резервируется заранее.
Т.е. с нуля, без таблиц, оно будет тоже занимать 100 метров.

Optimize для InnoDB нет, пока они рекомендуют время от времени конвертить таблицу в MyISAM в InnoDB, или делать дамп таблиц, прибивать их а потом восстанавливать. Но данные процедуры будут оптимизировать внетреннее хранение таблиц, на размере ibdata оно никак не отразиться по причине см. выше.

Stek:

--- Цитировать ---Место резервируется заранее.
Т.е. с нуля, без таблиц, оно будет тоже занимать 100 метров
--- Конец цитаты ---

Не всегда. У меня например, во избежании несчастного случая описанно как ibdata1:800M:autoextend
По ошибке была сконверченна большая база, в результате хранилище выросло до 1900Mb. Не нужное убилось, реальные таблицы занимают всего порядка 0,5Gb. В вот теперь минимум гиг занят впустую.
И нет никаких идей как его вернуть.  А тупо дампить все базы, убивать хранилище и создавать его заново - не очень красивое решение.

fidget:
> Не всегда
всегда ;) твои 800 метров, будут забиты сразу, а потом, если место будет мало, файл будет увеличиваться по 8 метров.

> И нет никаких идей как его вернуть.
ты сам описал идею ;)
пока нет никакой утилиты или комманды, которая бы все это очищала.

Stek:
Не, про те первые всегда - это я знаю, размер такой специально и установлен.
Ну да ладно, придется дампы делать, хотя и не очень удобно.

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии