Рекомендации и тюнинг 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)
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| 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
Комментарии
Тут еще нет комментариев, Вы можете стать первым...
Тут еще нет комментариев, Вы можете стать первым...