Що в MySQL означає "Накладні витрати", що в ньому погано, і як це виправити?


157

просте запитання, але це мене на деякий час наганяє ...

що таке "накладні витрати" в MySQL, і чи варто мене турбувати?

чи натиснути кнопку "оптимізувати таблицю" виправити це справді?

Відповіді:


147

Здається, що накладні витрати - це тимчасова дисковий простір, яку база даних використовувала для запуску деяких запитів, тому вам слід хвилюватися лише в тому випадку, якщо вона стає дійсно високою.

Ви можете порівняти "Оптимізація таблиці" з дефрагментацією вашого жорсткого диска.

Цитую:

Кожна база даних з часом потребує певної форми обслуговування, щоб підтримувати її на оптимальному рівні продуктивності. Очищення видалених рядків, перевпорядкування, стиснення, управління шляхами індексу, дефрагментація тощо - це те, що в mysql та інших термінах відоме як ОПТИМІЗАЦІЯ та інші терміни в інших базах даних. Наприклад, IBM DB2 / 400 називає її РЕОРГАНІЗАЦІЙНИМ ЧЛЕНОМ ФІЗИЧНОГО ФАЙЛУ.

Це схоже на те, щоб поміняти масло у вашому автомобілі або налаштувати. Ви можете подумати, що вам справді цього не потрібно, але, зробивши так, ваш автомобіль працює набагато краще, ви покращуєте пробіг газу тощо. Автомобіль, який отримує багато пробігу, потребує відремонтування частіше. База даних, яка отримує велике використання, вимагає того ж. Якщо ви виконуєте багато операцій ОНОВЛЕННЯ та / або ВИДАЛЕННЯ, і особливо якщо у ваших таблицях є стовпчики змінної довжини (VARCHAR, TEXT тощо), вам потрібно буде постійно налаштовувати.


1
@Jasper Чи повністю заблоковані таблиці (не вдається прочитати / записати) під час оптимізації?
Pacerier

4
Звідки походить ця цитата? Я знаходжу в Google багато результатів.
Ян Хантер

як ми можемо знати, що викликає накладні витрати знову і знову?
mahen3d

дякую за ідеальний і простий приклад, незалежно від химерних технічних умов.
shyammakwana.me

1
Що вважається "дійсно високим"?
TV-C-15

87

Якщо ви говорите про те, що phpMyAdminвикликає дзвінок overhead, то це фактичний розмір файлу даних таблиці відносно ідеального розміру того ж файлу даних (як би коли він був відновлений із резервної копії).

З міркувань продуктивності MySQLне стискає файли даних після видалення або оновлення рядків.

Це overheadпогано для сканування таблиці, тобто коли ваш запит повинен виконувати всі значення таблиці, йому потрібно буде переглянути більше порожнього простору.

Ви можете позбутися від overheadзапуску, OPTIMIZE TABLEякий ущільнить вашу таблицю та індекси.


7
Розмір документації mysql говорить: "ОПТИМІЗУВАТИ ТАБЛИЦЮ слід використовувати, якщо ви видалили велику частину таблиці або якщо ви внесли багато змін до таблиці із рядками змінної довжини", це мій випадок, дякую :)
boclodoa

8

Накладні дані - це дані, які не містять даних таблиці, тобто кількість виділених, але невикористаних байтів. Ми можемо знайти його за командою SQL SHOW TABLE STATUS . Це вільний простір у виділеному розмірі для вашого столу.


1

Оптимізувати таблицю може бути дуже проблематично. Наприклад, якщо таблиця сильно використовується на сайті.

http://dev.mysql.com/doc/refman/5.1/uk/optimize-table.html

Після видалення значної частини таблиці MyISAM або ARCHIVE або внесення багатьох змін до таблиці MyISAM або ARCHIVE зі рядками змінної довжини (таблиці, що містять стовпці VARCHAR, VARBINARY, BLOB або TEXT). Видалені рядки зберігаються у пов'язаному списку, а наступні операції INSERT повторно використовують старі позиції рядків. <

Я вважаю, що я підтвердив цю поведінку. І це, безумовно, було б дуже корисно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.