Мій файл ibdata дуже великий, принаймні, мені здається, він дуже великий. Це надмірно чи не так погано?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Мій файл ibdata дуже великий, принаймні, мені здається, він дуже великий. Це надмірно чи не так погано?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Відповіді:
Якщо ви працюєте show table status
за таблицею, і Data_free
поле складає переважну більшість ibdata1
розмірів вашого файлу, можливо, у вас є багато витраченого місця. Велика кількість вставок / видалень призведе до цієї проблеми. Якщо це так, і тимчасові вставки та видалення складають основну частину ваших даних, то у вас є гарний випадок для файлів на одну таблицю.
Це не автоматично "так", хоча. У світі багато говорять про внутрішню фрагментацію файлів InnoDB, але введення їх у файлову систему як файл за таблицею просто переміщує вашу фрагментацію на рівень файлової системи замість рівня баз даних.
Подумайте про свій файл InnoDB як файлову систему, а не як про файл. Якщо у вас багато файлів, вам знадобиться велика файлова система.
Здебільшого файлові системи справді добре підходять до масштабування для обробки терабайт даних і нераціональної кількості файлів. Іноді вони стикаються з проблемами із поганою індексацією (наприклад, обмеження кількості файлів у каталозі перед впливом на продуктивність), але здебільшого сучасна файлова система може добре проскочити в терабайтний діапазон.
InnoDB функціонує так само. Розмір файлу даних може бути величезним ... і, як і великі файлові системи, які можуть створювати проблеми із створенням резервної копії даних. Однак поділ вашої файлової системи на кілька розділів не допомагає у цьому питанні, а також не намагається маніпулювати innodb. Хоча ви можете використовувати innodb_file_per_table , я його рідко рекомендую.
Як і ваша файлова система, кращою відповіддю є знати внутрішньо межі та працювати в межах неї. Розумійте індекси та застосовуйте їх відповідним чином. Не працюйте над спробою розділити InnoDB, це не для цього.
Оскільки я намагаюся конструктивно передати цю концепцію, ось швидко прочитайте, що слова це краще, ніж я можу: Терабайти - це не великі дані, петабайт - це .
Я пам’ятаю дійсно старий маркетинг-слайд MySQL, де клієнт працював із сховищем даних з деякими терабайтими. Багато років назад. InnoDB або MyISAM, і те, і інше. Це стандартне обладнання для речей MySQL.
Не потійте базу даних 15 Гб.
InnoDB free: 7364608 kB
Файли ibdata не скорочуються - якщо ви нещодавно скинули деякі таблиці або видалили багато рядків - innodb у вашому конфігурації не звільнить вільний простір назад у файловій системі. я б запропонував вам:
таким чином ви зможете повернути простір щоразу, коли ви скинете таблицю / базу даних innodb - пов'язані файли idb будуть негайно видалені.