Наскільки великий розмір файлу ibdata?


9

Мій файл ibdata дуже великий, принаймні, мені здається, він дуже великий. Це надмірно чи не так погано?

-rw-rw---- 1 mysql mysql  15G Apr 18 10:11 ibdata1

4
Ваш файл ibdata дуже маленький.
Джефф Ферланд

Чи розділення цього файлу на менші шматки (скажімо, 4G) буде кращим чи гіршим для продуктивності?
nachito

Відповіді:


13

Коли це може бути проблемою

Якщо ви працюєте show table statusза таблицею, і Data_freeполе складає переважну більшість ibdata1розмірів вашого файлу, можливо, у вас є багато витраченого місця. Велика кількість вставок / видалень призведе до цієї проблеми. Якщо це так, і тимчасові вставки та видалення складають основну частину ваших даних, то у вас є гарний випадок для файлів на одну таблицю.

Це не автоматично "так", хоча. У світі багато говорять про внутрішню фрагментацію файлів InnoDB, але введення їх у файлову систему як файл за таблицею просто переміщує вашу фрагментацію на рівень файлової системи замість рівня баз даних.

Чому це зазвичай не є проблемою

Подумайте про свій файл InnoDB як файлову систему, а не як про файл. Якщо у вас багато файлів, вам знадобиться велика файлова система.

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

InnoDB функціонує так само. Розмір файлу даних може бути величезним ... і, як і великі файлові системи, які можуть створювати проблеми із створенням резервної копії даних. Однак поділ вашої файлової системи на кілька розділів не допомагає у цьому питанні, а також не намагається маніпулювати innodb. Хоча ви можете використовувати innodb_file_per_table , я його рідко рекомендую.

Як і ваша файлова система, кращою відповіддю є знати внутрішньо межі та працювати в межах неї. Розумійте індекси та застосовуйте їх відповідним чином. Не працюйте над спробою розділити InnoDB, це не для цього.

Оскільки я намагаюся конструктивно передати цю концепцію, ось швидко прочитайте, що слова це краще, ніж я можу: Терабайти - це не великі дані, петабайт - це .

Я пам’ятаю дійсно старий маркетинг-слайд MySQL, де клієнт працював із сховищем даних з деякими терабайтими. Багато років назад. InnoDB або MyISAM, і те, і інше. Це стандартне обладнання для речей MySQL.

Не потійте базу даних 15 Гб.


Схоже, я трохи менше 50% використаного. InnoDB free: 7364608 kB
nachito

@nachito Це здається, що це повинно бути добре. Якщо вам здається, що вам потрібен простір для файлової системи, відновіть його. Якщо ви просто переживаєте про продуктивність, не робіть цього. Крім того, для продуктивності найкраще зберігати файли бази даних на власному розділі, тому, якщо ви зосереджуєтеся на продуктивності, ви все одно не побачили б корисного повернення.
Джефф Ферланд

6

Файли ibdata не скорочуються - якщо ви нещодавно скинули деякі таблиці або видалили багато рядків - innodb у вашому конфігурації не звільнить вільний простір назад у файловій системі. я б запропонував вам:

  • створити резервну копію всіх своїх даних, наприклад, з mysqldump
  • додати до директиви my.cnf innodb_file_per_table
  • перезапустити mysql
  • скинути всі бази даних за допомогою двигуна innodb
  • зупинити mysql
  • видалити файл ibdata
  • rm ib_logfile [01]
  • запустіть mysql, перевірте syslog, якщо все в порядку
  • перезавантажте свій дамп

таким чином ви зможете повернути простір щоразу, коли ви скинете таблицю / базу даних innodb - пов'язані файли idb будуть негайно видалені.


Я розумію, що він ніколи не зменшиться без демпінгу та перезавантаження таблиць. Однак якщо я скинув бази даних InnoDB, він використовуватиме цей "вільний" простір, перш ніж він знову почне рости?
nachito

1
@nachito Так, так і буде.
Джефф Ферланд


Ваша відповідь - це просто відверта пропозиція, не помутнівши питання, як здається, моя відповідь. +1 !!!
RolandoMySQLDBA

1
Ну, відповідь - це рішення зменшити простір, який використовують файли даних, але це не обговорення заслуг, пов’язаних із цим, і це питання, коли я його читаю. Чи великий файл ibdata розміром 15 Гб?
Джефф Ферланд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.