Несколько слов о SQL оптимизации

admin, 2009-05-20 14:53:07

Как бы это не показалось неожиданным, часто не нужно менять код приложения и SQL запросов в нём, чтобы получить основной прирост производительности. Поделюсь основными практическими рекоммендациями по увеличению скорости работы баз данных на сервере MySQL:

Первый шаг - самый важный:

  1. настройки конфигурации MySQL - увеличьте буфферы используемые базой данных для работы с индексами, ключами и ответами от запросов.
  2. чем больше настроек привилегий - тем медленнее стартует каждый запрос. Быстрее всего работает рут пользователь с полными привилегиями.
  3. Установленный из пакетов MySQL сервер будет работать медленнее, чем если вы скомпилируете его под ваш конкретный сервер. Не используйте те модули сервера, которые вам не нужны.

Второй шаг - настройка баз данных

  1. используйте индексы там, где они могут ускорить запрос. Это самое основное правило ускоряющее работу базы данных при аудите и реинжиниринге её структуры.
  2. Как бы это ни было грустно, проверьте соответствие типов: однажды мы видели VARCHAR в числовых полях. Если диапазон данных мал, и функциональность приложения не меняет его, вместо числового или текстового типа используйте SET/ENUM
  3. Реально оцените диапазон данных и используйте минимальный тип. Для положительных полей укажите опцию UNSIGNED.
  4. помните, поле для MD5 хэшированного пароля - это не VARCHAR(32), а CHAR(32);

Третий шаг - лёгкий реинжиниринг кода.

  1. Используйте триггеры, особенно каскадное удаление и каскадную замену. В коде надо закомментировать, а затем и убрать каскадное удаление.
  2. Если PHP код всегда выполняет операции над строками, отдайте эти операции MySQL, они будут выполнены быстрее.
  3. Для очень частых запросов, надо сформировать вьюшки - они работают быстрее чем таблица или структура, которую они описывают.
  4. Если данные организованы деревом в 2 уровня, надо оценить, хранить их в одной таблице или в двух. Если фреймворк приложения поддерживает маппинг, и модель описана отдельно, то изменения в коде будут минимальны.

Тэги статьи: MySQL оптимизация 

 
  темы блога
все записи4
архитектура по1
программирование2
тестирование0
администрирование1
управление проектами0


  облако тегов


мы рекомендуем VPS хостинг:
VPS Hosting Referral Code D0V2GG
© phpcmf.com | вход для пользователей Rambler's Top100