простой вопрос, но это не давало мне покоя ...
Что такое "накладные расходы" в MySQL, и я должен беспокоиться?
Нажатие "оптимизировать таблицу" исправляет это на самом деле?
Похоже, что накладные расходы - это временное дисковое пространство, которое база данных использовала для выполнения некоторых запросов, поэтому вам следует беспокоиться только о том, насколько оно велико.
Вы можете сравнить «Оптимизация таблицы» с дефрагментацией вашего жесткого диска.
Я цитирую:
Каждая база данных со временем потребует определенной формы обслуживания, чтобы поддерживать ее на оптимальном уровне производительности. Очистка удаленных строк, повторное упорядочение, сжатие, управление путями индекса, дефрагментация и т. Д. - это то, что известно как ОПТИМИЗАЦИЯ в mysql и другие термины в других базах данных. Например, IBM DB2 / 400 называет это ПЕРЕЗАГРУЗИТЬ ФИЗИЧЕСКИЙ ЧЛЕН ФАЙЛА.
Это похоже на замену масла в вашей машине или настройку. Вы можете подумать, что на самом деле это не нужно, но при этом ваша машина работает намного лучше, вы получаете больший пробег бензина и т. Д. Автомобиль, который получает большой пробег, требует частой настройки. База данных, которая получает интенсивное использование, требует того же самого. Если вы выполняете много операций UPDATE и / или DELETE, и особенно если в ваших таблицах есть столбцы переменной длины (VARCHAR, TEXT и т. Д.), Вам нужно держать их в курсе.
Если вы говорите о том, что
phpMyAdmin
вызываетoverhead
, то это фактический размер файла данных таблицы относительно идеального размера того же файла данных (как если бы он был только что восстановлен из резервной копии).Из соображений
MySQL
производительности не сжимает файлы данных после удаления или обновления строк.Это
overhead
плохо для сканирования таблиц, т. Е. Когда ваш запрос должен выполняться по всем значениям таблицы, ему нужно искать больше пустого пространства.Вы можете избавиться от этого
overhead
, запустив,OPTIMIZE TABLE
что сократит вашу таблицу и индексы.источник
Служебные данные - это Data_free таблицы, то есть количество выделенных, но неиспользуемых байтов. Мы можем найти его командой SQL SHOW TABLE STATUS . Это свободное место в выделенном размере для вашего стола.
источник
Оптимизировать таблицу может быть очень проблематично. Например, если таблица интенсивно используется на сайте.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
Я считаю, что я подтвердил это поведение. И это действительно было бы очень полезно.
источник