Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Разница в работе 3,23,59 и 4,1,18 (Константин) 31/05/2006 - 21:10:12
      Re: Разница в работе 3,23,59 и 4,1,18 (Const) 01/06/2006 - 12:10:42
      Re: Разница в работе 3,23,59 и 4,1,18 (Dinky) 01/06/2006 - 23:50:09

> Original message text:
> From: Константин - 31/05/2006 - 21:10:12
> Subject:Разница в работе 3,23,59 и 4,1,18
> -----------------
> Приветствую.
>
> Есть ситуация.
> Два сервера - разработчиков (FreeBSD 5.4 + Apache 1.33 + PHP4.4 + MySQL 3.23.59, Celeron 900 + 512Mb RAM) и хостинг (Trustix Linux + Apache 2.0 + PHP4.4 + MySQL 4.1.18, Dual Xeon 3.0 HT + 2Gb RAM).
>
> Есть программа на PHP которая делает сложные выборки из базы.
> Изначально алгоритм был построен "не особо" оптимально и делал в нескольких циклах около 2000 запросов. На сервере разработчиков эта радость работала около 30 секунд, на хостинге - 7-8 секунд.
>
> Взялся я оптимизмровать алгоритм - успешно снизил количество запросов до 160 - 200. На сервере разработчиков всё стало летать - время выполнения не более 3-х секунд. Каково же было моё изумление, когда я проапдейтил программу на хостинг и увидел, что 200 запросов занимают по времени 16-19 секунд!!!
>
> В результате получается, что на MySQL 3.23 большое количество запросов выполняется медленнее нежели малое (что на мой взгляд вполне разумно), а на MySQL 4.1 с точностью наоборот!!!
>
> Провёл я тогда один тест - взял такой сервер: Celeron 2000 + 512RAM, на нём - FreeBSD 5.4 + Apache 1.33 + PHP4 + MySQL 4.1.18 и выполнил свои запросы (скопировав базу с хостинга) на нём. Результат оказался такой: количество запросов не изменилось (а с чего бы ему меняться-то), а время выполнения составило 36-40 секунд, т.о. тенденция сохранилась.
>
> Из чего делается вывод, что мои выборки оказались оптимизированы под MySQL 3.23.
>
> Вот вкратце алгоритм: первым запросом делается выборка из 4-х таблиц (LEFT join), причём одна из них подключается 4 раза LEFT join `table` as tb1, LEFT join `table` as tb2 и т.д.
> Этот запрос возвращаяет около 300 записей.
>
> Далее делается проход по каждой из возвращённых записей и, в зависимости от данных делается, либо нет, ещё один запрос по звум талицам с объединением их через where: select * from `t1`, `t2` where `t1`.`id` = `t2`.`sub_id`.
>
> Итого сумма запросов составляет около 200.
> С помощью phpmyadmin выяснил, что первый запрос (походу самый сложный) выполняется 0,2 секунды, а все осталльные 16 секунд на внешнем хостинге (на сервере разработчиков соответственно 0,3 и 2,5 секунды).
>
> Такая вот петрушка...
> Кто нить может подсказать, в каком направлении вести исследования, для повышения быстродействия???
>


From: Dinky - 01/06/2006 - 23:50:09
Subject:Разница в работе 3,23,59 и 4,1,18
-----------------
LEFT JOIN быстрым быть не может ;)
у Вас там небось еще и сортировка есть в конце с лимитом? тогда 4.1 будет медленее...
или переписать по-нормальному запросы
или попробовать 4.0.x

--
Dmitry


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
28381



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |