./comments
./contacts telegram: @stikname
email: ;

Рекомендации и тюнинг MySQL

MySQL

Несколько рекомендаций по тюнингу и улучшении работы mysql.

- Создание индексов.
В 99% это действительно так. Ещё нужно использовать кеширование индексов (key_buffer)

- Переход на InnoDB.
Этот тип таблиц менее подвержен сбоям (а так же имеет много преимуществ), нежели MyIsam и уже является типом таблиц по умолчанию в версиях 5.5 и выше.

- Использовать проверку тюнинг скриптов.
Вот 2 скрипта для тюнинга: mysqltuner.pl (http://mysqltuner.pl/mysqltuner.pl) и tuning-primer.sh (https://launchpad.net/mysql-tuning-primer). Их нужно запустить и следовать рекомендациям отчётов.

- Просмотр нагрузки в realtime.
Есть 2 замечательные утилиты для этих целей mtop и mytop. С их помощью вы сможете посмотреть в режиме реального времени, какие запросы н- ружают БД.

- Включить логгирование медленных запросов:
log_error=/var/log/mysql/error.log
log_slow_queries=/var/log/mysql/slow.log
long_query_time = 5
log-queries-not-using-indexes

и периодически смотреть лог.

- Соединение по сокету.
Использовать там, где это возможно соединение по сокету, вместо IP:port
socket=/tmp/mysql.sock
skip-networking


- skip-name-resolve
Использовать для skip-name-resolve отключения резолвинга. Этим вы можете выиграть до 20% производительности.
Но будьте внимательны: при включении этой опции localhost тоже не будет резолвится, поэтому если у вас в настройках сайта и в правах используется localhost — замените его на 127.0.0.1. В частности такое наблюдается на Debian Lenny

- Включение кеширования.
Действительно, это позволяет несколько ускорить работу БД. Включаем кеширование:
query_cache_type = 1

Что бы правильно подобрать параметры query_cache_size, query_cache_limit, а так же остальные параметры кеширования используйте утилиты проверки тюнинга.

- Приоритеты SELECT.
Если у вас запросы SELECT составляют 90% и более всех запросов, то имеет смысл добавить опцию low-priority-updates, которая повышает приоритет запросов select.

- Отключение неиспользуемых типов хранилищ
Если вы не используете, например, InnoDB или DBD, то их можно отключить. Это также сэкономит немного ресурсов:
skip-bdb
skip-innodb


Примечание
Если вы собрали mysql, например, без хранилища bdb, то при использовании опции skip-bdb получите такое сообщение:

[ERROR] /usr/local/libexec/mysqld: unknown option '--skip-bdb'


Поэтому лучше сначала посмотреть список доступных хранилищ.
ПС. Посмотреть все доступные типы хранилищ можно так:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)


- Количество потоков
Формула такова - Try number of CPU's*2 for thread_concurrency
thread_cache_size = 8
05.10.2013 17:53:38
admin
1321
0
Комментарии

Тут еще нет комментариев, Вы можете стать первым...