Советы по оптимизации php & mysql
08 03 2007Советы по оптимизации php & mysql
Тот кто хочет получить высокую проиводительность – не пишет просто быстрые скрипты. Для достижения высокой производительности PHP требуется хорошее понимание работы основных аппаратных средств, операционной системы и другого ПО, типа сервера и базы данных
Оптимизация баз данных
Если запрос занимает много времени воспользуйтесь командой EXPLAIN чтобы узнать каким образом Mysql выполняет этот запрос
Explain Select …
Оптимизация таблиц
Optimize table table_name [,table_name]
Выбирайте самый эффективные типы данных:
- mediumint часто оказывается эффективнее int
- обьявляйте колонки как Not null
- избегайте колонок blob, text и varchar
- первичный ключ таблицы должен быть как можно более коротким
- увеличивайте эффективность индекса – если известно что первые Х символом колонки уникальны то генерируйте индекс по этому числу символов
- не делайте индексы для каждой колонки таблицы
Правильно спроектирование базы данных должны иметь индексы, лучшие индексы те – которые создаются в команде Create table и учавстсвуют в множестве запросов. Лишние индексы замедляют запросы на обновление и удаление.
MySQL использует индексы автоматически, чтобы узнать какие индексы используются в текущем запросе нужно использовать команду Explain
Оптимизация запросов SELECT
Для их оптимизации проверьте можно ли добавить индекс. С помощью explain проверьте какие индексы используются и не следует ли их создать.
Оптимизация запросов INSERT
Этого можно добится используя команду INSERT DELAYED вместо INSERT, Клиент получает потверждение о успеной вставке хотя операция на сервере еще не завершена.
При загрузке данных из файла используйте LOAD DATE INFILE что в 20 раз быстрее чем множественные INSERT
Блокировка таблиц перед вставкой ускоряет эту операцию
LOCK TABLES a WRITE ;
INSERT…
INSERT…
UNLOCK TABLES;
Оптимизация запросов UPDATE
Оптимизируйте команды UPDATE как если бы они были SELECT
Оптимизация запросов DELETE
Для того чтобы удалить все записи из таблицы используйте команду TRUNCATE TABLE table_name вместо DELETE
Оптимизация соединений
Можно устанавливать постоянные соединения и избежать создания нового соединения с базой данных для каждого запроса :
mysql_pconnect
детальную статистику по завершению теста.
На Windows 2000 вы можете использовать Performance Monitor или Task Manager для просмотра статистики своей системы.
Альтернативно, вы можете использовать специальные инструменты для профелирования: APD (http://www.linuxjournal.com/article.php?sid=7213) или Xdebug (http://xdebug.derickrethans.nl/). Еще вы можете прочитать специальную статью на эту тему: http://phplens.com/phpeverywhere/node/view/52.
Дополнительный способ ускорить вышеприведенный код – это использование буферизации вывода. Это позволит накапливать информацию внутренне и потом вывести ее целиком на экран в конце выполнения скрипта. Это существенно уменьшит нагрузку на сеть за счет использования большего количества памяти и увеличения времени ожидания. В части моего кода, состоящего полностью из команд echo, улучшение работы достигло 15%.
ob_start();
for ($j=0, $max = sizeof($arr), $s = '';$j < $max;$j++)
echo $arr[$j] . '
';
Резюме
Чем больше вы разбираетесь в программном обеспечении, которое вы используете (Apache, PHP, IIS, база данных), и чем глубже ваши знания операционной системы, организации сети, аппаратного обеспечения сервера, тем лучше вы сможете выполнить глобальную оптимизацию вашего кода и вашей системы.
Для PHP скриптов самое узкое место обычно – это центральный процессор. Два процессора, вероятно, будут лучше, чем два гигабайта оперативной памяти.
Сборка PHP с параметром configure –enable-inline-optimization позволяет сделать максимально быстрый исполняемый файл.
Оптимизируйте вашу базу данных и индексы, которые чаще всего используются в параметре WHERE ваших SQL запросов. ADODB – очень популярная библиотека абстрактного доступа – позволяет работать в режими оптимизации SQL
Комментарии :
Нет комментариев. »
На Windows 2000 вы можете использовать Performance Monitor или Task Manager для просмотра статистики своей системы.
Альтернативно, вы можете использовать специальные инструменты для профелирования: APD (http://www.linuxjournal.com/article.php?sid=7213) или Xdebug (http://xdebug.derickrethans.nl/). Еще вы можете прочитать специальную статью на эту тему: http://phplens.com/phpeverywhere/node/view/52.
Дополнительный способ ускорить вышеприведенный код – это использование буферизации вывода. Это позволит накапливать информацию внутренне и потом вывести ее целиком на экран в конце выполнения скрипта. Это существенно уменьшит нагрузку на сеть за счет использования большего количества памяти и увеличения времени ожидания. В части моего кода, состоящего полностью из команд echo, улучшение работы достигло 15%.
ob_start();
for ($j=0, $max = sizeof($arr), $s = '';$j < $max;$j++)
echo $arr[$j] . '
';
Резюме
Чем больше вы разбираетесь в программном обеспечении, которое вы используете (Apache, PHP, IIS, база данных), и чем глубже ваши знания операционной системы, организации сети, аппаратного обеспечения сервера, тем лучше вы сможете выполнить глобальную оптимизацию вашего кода и вашей системы.
Для PHP скриптов самое узкое место обычно – это центральный процессор. Два процессора, вероятно, будут лучше, чем два гигабайта оперативной памяти.
Сборка PHP с параметром configure –enable-inline-optimization позволяет сделать максимально быстрый исполняемый файл.
Оптимизируйте вашу базу данных и индексы, которые чаще всего используются в параметре WHERE ваших SQL запросов. ADODB – очень популярная библиотека абстрактного доступа – позволяет работать в режими оптимизации SQL
Категории : PHP Отладка и оптимизация
Обратные ссылки : Нет обратных ссылок »


Обратные ссылки
Нет обратных ссылок