Размер таблицы увеличился после запуска «optimize table tablename»;

#mysql #mariadb #innodb

#mysql #mariadb #innodb

Вопрос:

Я запустил ОПТИМИЗАЦИЮ имени таблицы таблицы; где размер имени таблицы составляет около 54 ГБ. чтобы уменьшить размер этой таблицы innodb, я запустил команду optimize table.Но это увеличило размер таблицы до 59 ГБ! Любые причины для этого будут более полезными.

Edit1: эта таблица используется для ведения журнала.

Edit2: эта таблица использовалась ранее в MySQL, а затем она была перенесена в MariaDB, и, наконец, теперь она работает в MySQL 5.7.

Я использую MySQL 5.7 в версии Ubuntu с оперативной памятью около 50 ГБ.

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

1. У меня нет точного объяснения, но я видел подобные случаи. Я предполагаю, что некоторые типы индексов приводят к большей фрагментации хранилища в зависимости от порядка вставки данных. В качестве эксперимента я бы попробовал удалить все вторичные индексы, затем оптимизировать таблицу, а затем заново создать индексы.

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

3. Я знаю, что страницы InnoDB изначально заполняются только на 15/16 по умолчанию, чтобы обеспечить некоторое пространство для расширения при обновлении строк. Возможно, страницы вашей таблицы были очень плотно заполнены в старой таблице, и когда вы оптимизировали ее, скопировали данные на новые страницы с дополнительным пространством. Таким образом, по совпадению, в итоге было израсходовано и использовано на 9,25% больше места. Это всего лишь предположение.

4. Спасибо @BillKarwin, база данных, которую я использую, присутствовала в MySQL, а затем та же база данных перемещается в кластер MariaDB Galera, а затем перемещается в MySQL 5.7. будут ли данные, перемещаемые между различными СУБД, вызывать проблемы такого типа?

5. По-видимому, да. Я не делал этого перехода, но вы сделали. Что подтверждает ваш опыт?