Несколько слов о SQL оптимизации admin, 2009-05-20 14:53:07 Как бы это не показалось неожиданным, часто не нужно менять код приложения и SQL запросов в нём, чтобы получить основной прирост производительности. Поделюсь основными практическими рекоммендациями по увеличению скорости работы баз данных на сервере MySQL:
Первый шаг - самый важный:
- настройки конфигурации MySQL - увеличьте буфферы используемые базой данных для работы с индексами, ключами и ответами от запросов.
- чем больше настроек привилегий - тем медленнее стартует каждый запрос. Быстрее всего работает рут пользователь с полными привилегиями.
- Установленный из пакетов MySQL сервер будет работать медленнее, чем если вы скомпилируете его под ваш конкретный сервер. Не используйте те модули сервера, которые вам не нужны.
Второй шаг - настройка баз данных
- используйте индексы там, где они могут ускорить запрос. Это самое основное правило ускоряющее работу базы данных при аудите и реинжиниринге её структуры.
- Как бы это ни было грустно, проверьте соответствие типов: однажды мы видели VARCHAR в числовых полях. Если диапазон данных мал, и функциональность приложения не меняет его, вместо числового или текстового типа используйте SET/ENUM
- Реально оцените диапазон данных и используйте минимальный тип. Для положительных полей укажите опцию UNSIGNED.
- помните, поле для MD5 хэшированного пароля - это не VARCHAR(32), а CHAR(32);
Третий шаг - лёгкий реинжиниринг кода.
- Используйте триггеры, особенно каскадное удаление и каскадную замену. В коде надо закомментировать, а затем и убрать каскадное удаление.
- Если PHP код всегда выполняет операции над строками, отдайте эти операции MySQL, они будут выполнены быстрее.
- Для очень частых запросов, надо сформировать вьюшки - они работают быстрее чем таблица или структура, которую они описывают.
- Если данные организованы деревом в 2 уровня, надо оценить, хранить их в одной таблице или в двух. Если фреймворк приложения поддерживает маппинг, и модель описана отдельно, то изменения в коде будут минимальны.
Тэги статьи: MySQL оптимизация
| |
мы рекомендуем VPS хостинг: |