Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Время обработки БД средствами php

16K
03 мая 2006 года
dnd_digger
4 / / 03.05.2006
Есть БД в MySQL, в которой ~5000 записей, в записях html-код.
Вот при такой обработки 500 записей, время 18 сек., а если записей 1200, то уже 84 сек. Т.е. время обрабатывания записей в секунду не линейно.
Код:
[COLOR=crimson]$t1=time();[/COLOR]
$i=0;
for ($i; $i<$count; $i++)
  {
    $query =sprintf("SELECT info FROM avto LIMIT %d, 1", $i);
    $resulta = mysql_query ($query) or die ("Ошибка!!!");
   
    $line = mysql_fetch_array($resulta);
    $html=strstr($line['info'], $search);

    $len=strpos($html, $search2);
    $table=substr($html, 0, $len);
    $table=$table.$finish;
   
    $set=sprintf("INSERT INTO finish (info) VALUES ('%s')", addslashes($table));
    $result=mysql_query($set, $cars) or die(mysql_error());
}
[COLOR=crimson]
$t2=time();
echo "time: "; echo ($t2-$t1);
[/COLOR]

Если будете говорить, что лучше использовать реги, то я соглашусь с вами :) но! Если даже убрать обработку, а делать просто копирование базы, то на 500 записей вермя 29 сек. а на 1500 записей уже 189 сек.
Обратно время растет нелинейно x(
Код:
[COLOR=crimson]$t1=time();[/COLOR]
$i=0;
for ($i; $i<$count; $i++)
  {
    $query =sprintf("SELECT info FROM avto LIMIT %d, 1", $i);
    $resulta = mysql_query ($query) or die ("Ошибка!!!");
   
    $line = mysql_fetch_array($resulta);
    $table=$line['info'];

    $set=sprintf("INSERT INTO finish (info) VALUES ('%s')", addslashes($table));
    $result=mysql_query($set, $cars) or die(mysql_error());
}
[COLOR=crimson]
$t2=time();
echo "time: "; echo ($t2-$t1);
[/COLOR]


[COLOR=crimson]
Как измерял время дописал.
Запись содержит html-код на 31_932 байта. ^_^
4919 записей в БД на 141 мб.
[/COLOR]
8
03 мая 2006 года
mfender
3.5K / / 15.06.2005
А чем замерялось время? Каков размер данных в одном ряду, и вообще - объём данных в таблице?
Что-то очень уж цифры неправдоподобные.
16K
03 мая 2006 года
dnd_digger
4 / / 03.05.2006
Цитата:
Originally posted by mfender
А чем замерялось время? Каков размер данных в одном ряду, и вообще - объём данных в таблице?
Что-то очень уж цифры неправдоподобные.


все описал выше другим цветом.

18K
30 мая 2006 года
nitro_wtx
3 / / 30.05.2006
Проблема в SQL-запросе.
SELECT info FROM avto LIMIT %d, 1

При каждом таком запросе ты заставляешь СУБД просмотреть %d записей в отношении.
Проще сделать так:

Код:
$res = mysql_query("SELECT info FROM avto");
while ($line = mysql_fetch_array($res))
{
  // обрабатываем запись
    $html=strstr($line['info'], $search);

    $len=strpos($html, $search2);
    $table=substr($html, 0, $len);
    $table=$table.$finish;

    $set=sprintf("INSERT INTO finish (info) VALUES ('%s')", addslashes($table));
    $result=mysql_query($set, $cars) or die(mysql_error());
}
mysql_free_result($res);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог