Как рассчитать необходимое дисковое пространство для баз данных InnoDB? - PullRequest
6 голосов
/ 09 декабря 2010

У меня есть несколько баз данных в MySQL с движком InnoDB.Все вместе они имеют размер около 30 ГБ в файловой системе.Пару дней назад я удалил много данных из этих баз данных (~ 10-15 ГБ), но используемое пространство в файловой системе одинаковое, а также чтение data_length и index_length из information_schema. TABLES дают почти старый размер.

Я сбросил базу данных объемом 3,3 ГБ и импортировал ее на свою рабочую станцию, где она занимает всего 1,1 ГБ (да, это копия 1: 1).Итак, как я могу рассчитать размер, необходимый для базы данных InnoDB, если бы я импортировал его в новую систему?

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

InnoDB не освобождает дисковое пространство;это ПИТА.По сути, вы можете освободить ее, удалив базу данных и восстановив ее из резервной копии (как вы случайно заметили) - примеры приведены здесь .

Итак, вы не можете рассчитатьнасколько большой будет база данных после восстановления резервной копии. Но оно никогда не будет больше, чем без резервной копии (потому что в резервной копии по-прежнему есть место для любых удаленных данных, а в восстановленной резервной копии не будет этого места).

В некоторой степени это можно обойти, используя опцию файл на таблицу;подробнее в первой ссылке из этого поста.

3 голосов
/ 09 декабря 2010

Оптимизируйте свои таблицы после удаления больших объемов данных. http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

...