Що я повинен знати, перш ніж жити з базою даних InnoDB?


10

Що слід знати і робити адміністратору сервера або DB, перш ніж зробити базу даних InnoDB.

Я думаю про такі речі, як встановлення правильних значень для innodb_buffer_pool_sizeіinnodb_log_file_size

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

Відповіді:


14

Існує кілька варіантів конфігурації, які слід продумати перед початком роботи.

Поки ви не використовуєте myisam взагалі, ви можете безпечно виділити майже всі (тримати достатньо, щоб ваша ОС працювала комфортно і достатньо для вашої max_connections) своєї пам'яті innodb_buffer_pool. Найприємніше в InnoDB - це те, що він обробляє майже всі матеріали пам'яті самостійно, не потрібно розділяти такі речі, як кеші запитів, буфери ключів тощо

Я рекомендую вам включити innodb_file_per_table, просто тому, що це набагато простіше просто переглядати файлову систему та побачити, скільки місця потрібно для різних таблиць та баз даних. Вам все одно знадобиться загальний файл ibdata для внутрішнього використання InnoDB, але ви можете просто визначити його як 10M:autoextend. Не потрібно визначати багато різних файлів даних innodb із попередньо виділеними розмірами.

innodb_log_file_sizeі innodb_log_buffer_sizeкомбінований повинен бути більшим, ніж у десять разів більшим від вашого найбільшого об'єкта, якщо у вас багато великих. Якщо ви цього не зробите (і вам не слід [ 1 , 2 ]), насправді не потрібно багато цього турбувати. Перегляньте блог продуктивності MySQL для отримання детального звіту про те, як розрахувати.

І коли ви деякий час запускаєте MySQL, перевірте свої настройки за допомогою MySQLTuner або MySQL Tuning Primer .

Для більш детального звіту спробуйте mysqlreport , а для моніторингу в реальному часі перевірте mytop .


Про Innodb_file_per_table слід пам’ятати, що методи відновлення дискового простору різні. За допомогою файлів ibdata ви можете відновити простір у просторі таблиць, видаливши кінець своїх таблиць. Якщо окремі файли таблиці не відновлюються шляхом видалення, потрібно відновити таблицю з оптимізацією таблиці, щоб повернути простір у файлову систему. Оптимізуйте блокування таблиці і таким чином може спричинити простої у вашій програмі.
mtinberg

2

Невеликим "сюрпризом" для мене стало те, що innodb використовує за замовчуванням один файл для всіх баз даних / таблиць. На відміну від таблиць MyISAM, що використовує каталог на базу даних та файли на таблицю / tableindex.

Це може мати значення, якщо ви звикли стискати фізичні файли на основі таблиці (оптимізуйте таблицю xxx)

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