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
Продолжить чтение "Советы по оптимизации php & mysql"
Комментарии :
Нет комментариев. »
Категории : PHP Отладка и оптимизация
Обратные ссылки :
Нет обратных ссылок »
05
03
2007
Буфер - область памяти для временного хранения промежуточных данных.
Кэширование - накопление данных в доступном хранилище, с целью их быстрого извлечения по мере надобности. Кэширование ускоряет процесса обработки информации.
Комментарии :
Нет комментариев. »
Категории : PHP Отладка и оптимизация
Обратные ссылки :
Нет обратных ссылок »
01
03
2007
Nastroiki v php.ini
;zend_extension_ts="c:/wamp/php/ext/php_xdebug-2.0.0rc3-5.2.1.dll"
;xdebug.profiler_output_dir = "C:/wamp/tmp/debug"
;xdebug.profiler_enable = 1
;xdebug.trace_output_dir = "C:/wamp/tmp/debug/trace/"
;xdebug.trace_format = 0
;xdebug.auto_trace=on
;xdebug.dump_undefined = on
;xdebug.dump_once = off
;xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
;xdebug.dump.REQUEST
------------------------------------
Mogu raspeceatati array v citabelinom vide : xdebug_var_dump($Row);
Mogu otslejivati vipolnenie faila po vremeni, kakie faili i kakie funktsii zapuskaiut - eto delaetsa ustanavlivaia vishe opisannie nastroiki "trace" a potom prosmatrivaiu fail v ukazannoi papke.
Primer faila :
TRACE START [2007-03-01 10:33:44]
0.0024 58392 -> {main}() C:****************\rechercher_compte_ldcom.php:0
0.0148 643248 -> require(C:***************\lib_fonctions.inc.php)
TRACE END [2007-03-01 10:33:44]
-----------------------
Nu i nailucshim ispolizovaniem skoree vsego iavleaetsea sozdanie cachegrid failov i prosmatrivanie ih WinCacheGrid
hotea budu iskati necito podobnoe no citobi rabotalo bez vneshnih prilojenii i citobi vivodila infu v samom scripte.
poka vseo
Комментарии :
Нет комментариев. »
Категории : PHP Отладка и оптимизация
Обратные ссылки :
Нет обратных ссылок »
22
02
2007
PROFILING MODES
XDEBUG_PROFILER_LBL (0) default
Line by Line Profile, this is the simplest profiling mode that will display the profiling data sorted by line numbers from smallest to greatest. This profile mode can be used to give you a quick overview of your code's flow as the script progresses, to give you some a general idea about which section(s) of the code optimization efforts should focus on.
XDEBUG_PROFILER_CPU (1)
Execution Time Profile, this is essentially the same profile as line by line, with one notable exception, the function calls are sorted by the amount of time they took to execute, from greatest to smallest.
XDEBUG_PROFILER_NC (2)
When the profiler encounters the same function being called on the same line it will merge the calls to this function on that line into a single entry. This profile mode, which is virtually identical to the line by line profile will sort the profiler data based on number of calls to the same function on the same line. Since it is very rare that you would call the same function on the same line more then once and usually signifies unnecessary code this profile mode enables you to quickly detect and resolve such oversights.
XDEBUG_PROFILER_FS_AV (3)
Average Execution Time Profile, all calls to the same function will be merged into a single entry and the output will be sorted based on the average time each function took to execute, sorted from greatest to smallest. This is probably one of the more useful profiling modes because it allows you to immediately see, which functions are slow and could use improvement.
XDEBUG_PROFILER_FS_SUM (4)
Total Execution Time Profile is almost identical to the Average Execution Time Profile, except this the output is sorted based on the total time calls to a certain function took. Once again a very useful profile, because it allows you to see the cumulative effect of calling a particular function.
XDEBUG_PROFILER_FS_NC (5)
Number of Total Function Calls Profile, will generate a profile similar to Average Execution Time Profile, with the one exception of sorting the data based on the number of calls to a particular function in the entire script. This is very useful in determining, what common functions are used, so that you can either optimize their usage or try to reduce the number of calls to those functions.
XDEBUG_PROFILER_SD_LBL (6)
Line by Line Stack Profile, this profile allows you to see the execution tree of the functions used in the script, allowing you to see the 'flow' of the script and how long each portion took.
XDEBUG_PROFILER_SD_CPU (7)
Execution Time Stack Profile, nearly identical to Line by Line Stack Profile, only now the stack segments are sorted based on the time it took to execute each portion of the code.
XDEBUG_PROFILER_SD_NC (8)
Total Function Calls Stack Profile, same as above, only sorted by number of function calls this time.
Комментарии :
Нет комментариев. »
Категории : PHP Отладка и оптимизация
Обратные ссылки :
Нет обратных ссылок »
22
02
2007
http://developpeur.journaldunet.com/tutoriel/php/060608-php-profiling-xdebug.shtml
http://www.xdebug.org/
---
zend_extension_ts = "c:/Program Files/wamp/php/ext/php_xdebug-5.1.1-2.0.0beta5.dll"
xdebug.auto_profile = 1
xdebug.profiler_output_dir = "C:/Program Files/wamp/tmp"
xdebug.profiler_enable = 1
---
Client prosmotra grid failov : http://sourceforge.net/projects/wincachegrind/
Комментарии :
Нет комментариев. »
Категории : PHP Отладка и оптимизация
Обратные ссылки :
Нет обратных ссылок »