Novecheg Опубликовано 3 октября, 2012 Жалоба Поделиться Опубликовано 3 октября, 2012 Интересная ситуация: если к странице давно не обращались, время её генерации 500 и более мс, если загрузить страницу и через время её обновить, время уменьшится до 50-60 мс.И дело именно в базе данных.Что делать в этой ситуации? Как ускорить загрузку страниц? Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 3 октября, 2012 Автор Жалоба Поделиться Опубликовано 3 октября, 2012 ап Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 4 октября, 2012 Автор Жалоба Поделиться Опубликовано 4 октября, 2012 ап Цитата Ссылка на сообщение Поделиться на другие сайты
noname00 Опубликовано 4 октября, 2012 Жалоба Поделиться Опубликовано 4 октября, 2012 Если к странице обращались не очень давно, то при повторном запросе данные выборки с базы берутся с кэша (именно кэша MYSQL). На хостингах размер кэша настроен по разному. Если сделали INSERT,UPDATE, DELETE то кэш для для таблиц сбрасывается.Как ускорить загрузку страниц? Нужно смотреть какие запросы больше всего грузят, и пытаться их переписать по другому. Если у Вас до 50 000 товаров - то должно всё нормально работать на "стандартных симпловских запросах", но опять таки это много зависит от хостингаЕсли Вы смотрите page generation time: 0.500 seconds, то сюда входит не только время выполнения запросов, это общее время (php + mysql)0.500 seconds - это нормально Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 4 октября, 2012 Автор Жалоба Поделиться Опубликовано 4 октября, 2012 Я смотрю не столько на page generation time, сколько на MYSQL time. Об этом писал выше.0.5 - неплохо, но хотелось бы раз в 10 быстрее. Цитата Ссылка на сообщение Поделиться на другие сайты
noname00 Опубликовано 4 октября, 2012 Жалоба Поделиться Опубликовано 4 октября, 2012 смотрите тогда, запросы которые выполняются долго и попытайтесь их оптимизироватьМожете поэкспериментировать с настройками MYSQL, если имеете к им доступ Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 5 октября, 2012 Автор Жалоба Поделиться Опубликовано 5 октября, 2012 как посмотреть и как оптимизировать? Цитата Ссылка на сообщение Поделиться на другие сайты
noname00 Опубликовано 5 октября, 2012 Жалоба Поделиться Опубликовано 5 октября, 2012 api/Database.php public function query() { $time_start = microtime(true); $args = func_get_args(); $q = call_user_func_array(array($this, 'placehold'), $args); if($this->link) { // В отладочном режиме ведем лог if($this->config->debug) { $start = microtime(true); $this->res_id = mysql_query($q, $this->link); $end = microtime(true); //$this->log->write('Executing query: '.$q."\r\nExecution time: ".($end-$start).' seconds'); write_log('Executing query: '.$q."\r\nExecution time: ".($end-$start).' seconds'); } else { $this->res_id = mysql_query($q, $this->link); } } else { $error_msg = "Could not execute query to database, wrong database link. [$q]"; trigger_error($error_msg, E_USER_WARNING); return false; } if(!$this->res_id) { $error_msg = mysql_error($this->link).' ['.$q.']'; trigger_error($error_msg, E_USER_WARNING); return false; } $time_end = microtime(true); $exec_time = round(($time_end-$time_start)*1000, 0); //print "$exec_time ms <br>$q<br><br>"; return $this->res_id; } Сама ф-ция $db_debug = ''; function write_log($s){ global $db_debug; $s = str_replace(array("\n", "\r\n", "\t") ," ", $s)."\r\n"; $db_debug .= '<p>'.$s.'</p>'; if ($file = fopen('files/log/log.txt','a')){ fwrite($file, $s); fclose($file); } } и в index.php вывод// Отладочная информацияif(1){ //print "<!--\r\n"; echo $db_debug; $time_end = microtime(true); $exec_time = $time_end-$time_start; if(function_exists('memory_get_peak_usage')) print "memory peak usage: ".memory_get_peak_usage()." bytes\r\n"; print "page generation time: ".$exec_time." seconds\r\n"; //print "-->";}Если Вы не знаете структуры БД симплы или оптимизацию запросов к MYSQL, то лучше самому не править, обратитесь к специалисту.Если у Вас товаров не слишком много до 50 000 вариантов товаров, и нет явно выраженного медленного запроса, то не целесообразно переписывать запросы. Лучше увеличить ресурсы MYSQL. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.