Перейти к содержимому


Фото
- - - - -

Скорость загрузки

загрузка скорость БД mysql

  • Чтобы отвечать, сперва войдите на форум
8 ответов в теме

#1 Novecheg

Novecheg
  • Пользователь
  • 257 сообщений

Опубликовано 03.10.2012 - 06:25

Интересная ситуация: если к странице давно не обращались, время её генерации 500 и более мс, если загрузить страницу и через время её обновить, время уменьшится до 50-60 мс.
И дело именно в базе данных.
Что делать в этой ситуации? Как ускорить загрузку страниц?



#2 Novecheg

Novecheg
  • Пользователь
  • 257 сообщений

Опубликовано 03.10.2012 - 14:50

ап



#3 Novecheg

Novecheg
  • Пользователь
  • 257 сообщений

Опубликовано 04.10.2012 - 10:17

ап



#4 noname00

noname00
  • Пользователь
  • 40 сообщений

Опубликовано 04.10.2012 - 12:51

Если к странице обращались не очень давно, то при повторном запросе данные выборки с базы берутся с кэша (именно кэша MYSQL). На хостингах размер кэша настроен по разному. Если сделали INSERT,UPDATE, DELETE то кэш для для таблиц сбрасывается.

Как ускорить загрузку страниц?

Нужно смотреть какие запросы больше всего грузят, и пытаться их переписать по другому. Если у Вас до 50 000 товаров - то должно всё нормально работать на "стандартных симпловских запросах", но опять таки это много зависит от хостинга

Если Вы смотрите page generation time: 0.500 seconds, то сюда входит не только время выполнения запросов, это общее время (php + mysql)

0.500 seconds - это нормально



#5 Novecheg

Novecheg
  • Пользователь
  • 257 сообщений

Опубликовано 05.10.2012 - 01:18

Я смотрю не столько на page generation time, сколько на MYSQL time. Об этом писал выше.
0.5 - неплохо, но хотелось бы раз в 10 быстрее.



#6 noname00

noname00
  • Пользователь
  • 40 сообщений

Опубликовано 05.10.2012 - 02:55

смотрите тогда, запросы которые выполняются долго и попытайтесь их оптимизировать

Можете поэкспериментировать с настройками MYSQL, если имеете к им доступ



#7 Novecheg

Novecheg
  • Пользователь
  • 257 сообщений

Опубликовано 05.10.2012 - 07:17

как посмотреть и как оптимизировать?



#8 noname00

noname00
  • Пользователь
  • 40 сообщений

Опубликовано 05.10.2012 - 11:57

api/Database.php

[code] 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;
}
[/code]


Сама ф-ция
[code]
$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);
}
}
[/code]

и в 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.







Также с меткой «загрузка, скорость, БД, mysql»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых