LEOnidUKG: Была бы статичная Таблица, то можно было бы сделать. А так то данные меняются автоматически.
Раз в час поменялись - повторили сортировку и так на автомате.
Проверить же не сложно - будет толк на вашей системе или нет, заодно оцените сколько выполняется сортировка и если после неё запрос в 15 сек выполнится за 7 сек - это уже результат.
SELECT * FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30
Чем дальше "в лес" т.е. листаем глубже, сервер просто умирает на таком запросе и выполняется по 15 секунд. А как боты набегут и давать клацать по 10 таких запросов.
Сейчас проверил на своей базе - 400 000 записей 510МБ , 40 разных категорий
SELECT SQL_NO_CACHE * FROM `data` WHERE kat=5 ORDER BY id DESC LIMIT 37710, 30
0.8 сек.
если отсортировать базу в обратном порядке - чтобы избежать сортировки
SELECT SQL_NO_CACHE * FROM `data` WHERE kat=5 LIMIT 37710, 30
SELECT id FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30
в вашем первоначальном выцепляются все поля - ответ получается длинным и не попадает в кэш.
А ваше решение
LEOnidUKG:
$result=mysql_query("SELECT id FROM `cms_freepages` WHERE cat=14"); while ($rowclubs = @mysql_fetch_array($result)) { $arrayid[]=$rowclubs['id']; } $cnt=sizeof($arrayid); $newmass=array_chunk(array_reverse($arrayid),25);
echo 'SELECT * FROM `cms_freepages` WHERE id in ('.implode(',',$newmass[11]).') ORDER BY ID';
Отображает строки 0 - 24 ( 25 всего, запрос занял 0.1117 сек.)
Летает по причине того что есть всего 19 разных запросов, а тех,когда выполняется с лимитом, 100500 , которые удачно ложатся в кэш и благодаря частомы выполнению там поселяются навсегда, но ровно до того момента когда тело ответа <1МБ (по дефолту в MySQL)
Как видите подсчеты от и до разнятся в 10 раз - не понятно сколько трафика сгенерируют ваши рекламные материалы - от 1 до 10 ТБ.
Вам скорее всего выгоднее будет взять VPS ссылки с которого будут проставлять партнеры (не думаю что траф там будет большой) а вот раздачу на своей площадке с 10 000 уников осуществить с площадок вебмастеров - пошушукайте тут на форуме - наверняка найдете того кто в Германии берет сервак за 50 евро и у него остаются не использованные 5-8ТБ трафика.
Зачем деление на VPS и партнера? - чтобы экстренно не менять ссылки на сайтах партнеров, если вдруг вебмастер с форума подведет.
И тогда проведение раздачи своих роликов вам обойдется в $10-$30 но придется самому пошушукать, ну или го в CDN за $100-$500.
PS.
Магу организовать раздачу за $100 при планке 10ТБ.
На счет цен, на сколько я понимаю в месяц мне все это хозяйство может выливаться в 300 - 500 долларов :( Так мне на вскидку подсчитал уже один хостинг, не буду называть его имя. Как думаете, цифра адекватная?
Такое хозяйство всего то выльется в пару десятков $
Если конечно не разместите свои ролики на облачном какомнить хостинге с конским ценником за траф.
т.к. по делу у вас основная затратная статья - трафик - которого потребуется не больше 1ТБ - а это копейки, чтобы стоить дорого.
Да оно уже сейчас выполняется доли секунды. Опять же говорю сейчас проблема лишь как быстро считать все ID из категории 1 раз и всё.
АА :) чета я пропустил сообщение что проблема решена :)
Была бы статичная Таблица, то можно было бы сделать. А так то данные меняются автоматически.
Раз в час поменялись - повторили сортировку и так на автомате.
Проверить же не сложно - будет толк на вашей системе или нет, заодно оцените сколько выполняется сортировка и если после неё запрос в 15 сек выполнится за 7 сек - это уже результат.
Про какую именно сортировку вы имеете ввиду? То что она в PHP проходит?
Саму базу отсортировать.
ALTER TABLE `cms_freepages` ORDER BY `id` DESC
Ну что я могу поделать? Вас поздравляю, у меня всё по другому и всё работает медленее. Возможно зависит от настроек или же серверной машины.
Я вообще-то помочь хотел, а не хвастаться.
Что мешает сортирнуть базу в обратном порядке и не использовать сортировку в каждом запросе?
PS.
А индекс базы полностью помещается в RAM? - памяти выделено достаточно? чтобы не перечитывать индексы с диска?
Я в свое время очень увлеченно тюнил свою доску объявлений - и постраничный вывод был ахилесовой пятой.
SELECT * FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30
Чем дальше "в лес" т.е. листаем глубже, сервер просто умирает на таком запросе и выполняется по 15 секунд. А как боты набегут и давать клацать по 10 таких запросов.
Сейчас проверил на своей базе - 400 000 записей 510МБ , 40 разных категорий
SELECT SQL_NO_CACHE * FROM `data` WHERE kat=5 ORDER BY id DESC LIMIT 37710, 30
0.8 сек.
если отсортировать базу в обратном порядке - чтобы избежать сортировки
SELECT SQL_NO_CACHE * FROM `data` WHERE kat=5 LIMIT 37710, 30
0,3 сек.
с кэшированием так ваще агонь.
PS.
kat tinyint(4)
в 5 категории 82 000 записей
ради интереса проверьте как быстро выполняется
SELECT id FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30
в вашем первоначальном выцепляются все поля - ответ получается длинным и не попадает в кэш.
А ваше решение
$result=mysql_query("SELECT id FROM `cms_freepages` WHERE cat=14");
while ($rowclubs = @mysql_fetch_array($result))
{
$arrayid[]=$rowclubs['id'];
}
$cnt=sizeof($arrayid);
$newmass=array_chunk(array_reverse($arrayid),25);
echo 'SELECT * FROM `cms_freepages` WHERE id in ('.implode(',',$newmass[11]).') ORDER BY ID';
Отображает строки 0 - 24 ( 25 всего, запрос занял 0.1117 сек.)
Летает по причине того что есть всего 19 разных запросов, а тех,когда выполняется с лимитом, 100500 , которые удачно ложатся в кэш и благодаря частомы выполнению там поселяются навсегда, но ровно до того момента когда тело ответа <1МБ (по дефолту в MySQL)
А специально для темных:
Почему ресурсы предоставляются не соизмеримые на XEN и OpenVZ?
Как видите подсчеты от и до разнятся в 10 раз - не понятно сколько трафика сгенерируют ваши рекламные материалы - от 1 до 10 ТБ.
Вам скорее всего выгоднее будет взять VPS ссылки с которого будут проставлять партнеры (не думаю что траф там будет большой) а вот раздачу на своей площадке с 10 000 уников осуществить с площадок вебмастеров - пошушукайте тут на форуме - наверняка найдете того кто в Германии берет сервак за 50 евро и у него остаются не использованные 5-8ТБ трафика.
Зачем деление на VPS и партнера? - чтобы экстренно не менять ссылки на сайтах партнеров, если вдруг вебмастер с форума подведет.
И тогда проведение раздачи своих роликов вам обойдется в $10-$30 но придется самому пошушукать, ну или го в CDN за $100-$500.
PS.
Магу организовать раздачу за $100 при планке 10ТБ.
На счет цен, на сколько я понимаю в месяц мне все это хозяйство может выливаться в 300 - 500 долларов :( Так мне на вскидку подсчитал уже один хостинг, не буду называть его имя. Как думаете, цифра адекватная?
Такое хозяйство всего то выльется в пару десятков $
Если конечно не разместите свои ролики на облачном какомнить хостинге с конским ценником за траф.
т.к. по делу у вас основная затратная статья - трафик - которого потребуется не больше 1ТБ - а это копейки, чтобы стоить дорого.
Так что $10-$30 потолок.
я вас наверно удивлю но такой хостинг есть и за 100 руб. меня просто выперли оттуда поэтому ищу замену
Ну так расписывайте - за что поперли - интересно же )
а если по делу то у этих людей тариф подойдет
http://aminahost.ru/hosting.html
2 GB 90.00 руб.
4 GB 172.50 руб.
ну или как советуют слабенький VDS с 512 памяти + разово купить панель ИСП менеджера + разовую настройку администратора.