|
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: Const - 01/06/2006 - 12:10:42
Subject:Разница в работе 3,23,59 и 4,1,18
-----------------
explain одно и тоже показывает в обоих случаях?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
28381
|
|