Налаштування MySQL 5
Налаштування MySQL зводиться, в основному, до редагування головного конфігураційного файлу (/etc/my.cnf FreeBSD). Перед налаштуванням слід врахувати, що у MySQL 5.6 назви деяких параметрів та їх наявність відрізняється від тих, які використовувалися у попередніх версіях.
MySQL 5.6 - конфігурація my.cnf
Для того, щоб зміни у файлі my.cnf набули чинності, необхідно перезавантажити сервер MySQL:
Перевірити, чи сприйняті нові налаштування сервером, можна за допомогою запиту до БД:
Якщо після перезавантаження, зміни застосувалися частково або не сприймаються сервером MySQL, перевірте, чи можливо відредагований не той файл або MySQL додатково підвантажує інший конфігураційний файл, директиви якого перепризначають змінені вами параметри. Наприклад, при встановленні панелі керування хостингом DirectAdmin, сервер MySQL встановлюється автоматично і містить 2 конфігураційні файли: /etc/my.cnf і додатково підвантажується /usr/local/mysql/my.cnf. Змінюючи параметр sql_mode в /etc/my.cnf я довго не міг зрозуміти, чому він не застосовується до MySQL сервері, як виявилося, він перевизначався в /usr/local/mysql/my.cnf (FreeBSD) або /usr/my. cnf (CentOS). Як знайти список всіх файлів my.cnf, які використовуються в MySQL, можна переглянути, ввівши запит у пошуковій системі: "my.cnf location".
Повний список налаштувань, які використовуються в my.cnf, можна переглянути в офіційному посібнику користувача MySQL (eng), у колонці Option File.
Налаштування у розділі [mysqld]
local_infile
Цю змінну можна дозволити (ON або 1 - за замовчуванням) або заборонити (OFF або 0) використовувати LOCAL у запиті LOAD DATA. Якщо ви не знаєте точно, що це і навіщо потрібно, рекомендується переключити local_infileв OFF (local_infile=OFF) з міркування безпеки сервера загалом.
skip_external_locking
skip_external_locking - параметр, що відповідає за зовнішнє блокування файлів баз даних типу MyISAM (за замовчуванням встановлено в ON - блокування включене). Рекомендовано не змінювати цей параметр з міркувань швидкодії MySQL.
skip_name_resolve
low_priority_updates
За замовчуванням, такі оператори MySQL як INSERT, REPLACE, UPDATE, DELETE мають вищий пріоритет, ніж, наприклад, SELECT, і параметр low_priority_updates, відповідно, встановлений у OFF. Якщо сервер більше посилає запитів на читання, ніж зміна даних таблиць, можна встановити low_priority_updates в ON. Слід зазначити, що low_priority_updates застосовується лише до типів таблиць MyISAM, MEMORY та MERGE.
За умовчанням, в MySQL 5.6.6 і пізніших версіях значення sql_mode встановлено в NO_ENGINE_SUBSTITUTION ( sql_mode=NO_ENGINE_SUBSTITUTION ), що буде достатньо більшості сайтів, але все ж для розуміння роботи MySQL слід знати і про інші способи роботи MySQL, що задаються.
max_connections
Цей параметр відповідає за максимально-допустиму кількість одночасних підключень до MySQL. За замовчуванням його значення дорівнює 151 і може бути змінено в межах від 1 до 100 000. Збільшувати це значення слід, якщо з'являється помилка "Too many connections" або адміністратор впевнений, що значення за промовчанням буде не достатньо.
query_cache_type
Query_cache_type включає (ON) або вимикає (OFF) кешування запитів. Кешування - добрий спосіб знизити навантаження, якщо сервер обробляє багато однакових запитів. Використовувати query_cache_type слід практично завжди, за винятком випадків, коли запитиMySQL кешує memcached.
query_cache_size
Розмір кешу запитів MySQL. Значення можна записати в Mb-query_cache_size=32M.
Налаштування для таблиць MyISAM
key_buffer_size
Якщо використовуються лише таблиціMyISAM, розмір буфера слід встановити у розмірі близько 30-35% від доступної оперативної пам'яті. Якщо MyISAM-таблиць дуже мало чи ні зовсім, тоkey_buffer_size можна встановити значення 32 МБ, місце буде використовуватися для зберігання в пам'яті індексів тимчасових таблиць, створюваних на диску. Вибір обсягу пам'яті для key_buffer_size залежить від розмірів індексів, даних та навантаження на сервер. Слід знати, що MyISAM використовує кеш операційної системи, щоб зберігати дані, тому потрібно залишити достатньо місця в ОЗУ під них. Дані можуть займати значно більше місця, аніж індекси. Однак варто перевірити, що вся пам'ять, вказана в key_buffer_size під кеш, постійно використовується, інакше це буде витрачання ресурсів у нікуди.
Установки для таблиць InnoDB
innodb_buffer_pool_size
innodb_buffer_pool_size - розмір буфера таблиць InnoDB. Таблиці типуInnoDB використовують свій буфер для зберігання індексів та даних, тому немає необхідності залишати пам'ять під кеш операційної системи, встановлюйте innodb_buffer_pool_size у 75% доступної оперативної пам'яті, якщо планується використовувати лише таблиці з типом InnoDB. Рекомендації щодо максимального розміру цієї опції аналогічні key_buffer_size для MyISAM: не варто встановлювати максимальний розмір, потрібно знайти оптимальний варіант, а доступною ОЗП можна знайти застосування і в інших завданнях.