Почему два файла mysql (одна и та же таблица, одно и то же содержимое) имеют разный размер? - PullRequest
1 голос
/ 30 мая 2009

Я взял существующую базу данных MySQL и настроил копию на новом хосте.

Размер файла для некоторых таблиц на новом хосте на 1-3% меньше, чем у их файлов на старом хосте.

Мне любопытно, почему это так.

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

Есть ли смысл в том, чтобы внутри самой структуры b-дерева была фрагментация? (Говоря на уровне базы данных, а не в отношении уровня файловой системы ОС) Сначала я думал, что нет, но опять же, не является ли такая фрагментация основой для задачи DBA по сжатию файлов вашей базы данных?

Мне интересно, может быть, это просто артефакт уровня файловой системы. то есть новый хост имеет в основном пустой диск, следовательно, меньшая фрагментация приведет к выделению нового файла. С другой стороны, я не думал, что фрагментация будет отображаться в указанном размере файла (ОС Linux).

Ответы [ 2 ]

2 голосов
/ 30 мая 2009

Конечно, может быть фрагментация в файлах данных MySQL или индексных файлах. Это обычное дело, даже преднамеренное .

То есть механизм хранения может намеренно оставлять некоторое дополнительное пространство здесь и там, чтобы при изменении значений он мог вписываться в строки без необходимости переупорядочивать весь файл данных. Есть даже свойства сервера, которые вы можете использовать, чтобы настроить, сколько из этого отстойного пространства выделить.

Я бы даже не моргнул при несоответствии файлов 1-3%.

2 голосов
/ 30 мая 2009

Из того, что я понимаю, mysql имеет алгоритм роста по мере приближения к емкости, при монтировании выбирает другой размер, значительно сокращая избыточное хранилище

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...