mysql+150000 записей+размер 500МБ. Вешается :)

N
На сайте с 06.05.2007
Offline
419
#21

ну а изначальный тогда что возвращает и сколько выполняется? не должен сильно отличаться

SELECT * FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30

Кнопка вызова админа ()
edogs software
На сайте с 15.12.2005
Offline
775
#22
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 сек.)

у Вас тут в первом запросе нет order, поэтому результат не равнозначный первоначальному и некорректный в целом.

В Вашем текущем варианте Вы выбираете записи по сути в случайном порядке (на самом деле нет, но тут важно то, что он непредсказуемый и не константа), потом берете 25 записей из середины и сортируете их по ИД. Это не лучшая идея, у Вас даже на одной странице при 2 обновлениях подряд не гарантируется одинаковость контента.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
B
На сайте с 23.10.2006
Offline
170
#23

ради интереса проверьте как быстро выполняется

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)

DV
На сайте с 01.05.2010
Offline
644
#24

Когда я упёрся в постоянное длительное дёрганье диска, то да, решил в лоб. Создал виртуальный раздел в памяти и поместил БД туда. Скорость возрасла раз этак в 5-10 как минимум. Процессор был напряжён почти постоянно, зато диски не шевелились подолгу. Перегнал всё, что мне надо, за 8 часов, и усё.

Под Windows Server 2003 дело было.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#25
netwind:
ну а изначальный тогда что возвращает и сколько выполняется? не должен сильно отличаться

SELECT * FROM `cms_freepages` WHERE cat=2 ORDER id DESC LIMIT 37710, 30

MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 4.0899 сек. )

А у меня:

1. Запрос: Отображает строки 0 - 29 ( 3,898 всего, запрос занял 0.1916 сек.) [id: 515 - 1203]

2. Запрос: Отображает строки 0 - 24 ( 25 всего, запрос занял 0.0736 сек.)

Я конечно понимаю вложенность запросов и т.п., но я знаю суть, что мускуль любит простые запросы, их я ей и даю.

---------- Добавлено 24.02.2012 в 00:01 ----------

Создал виртуальный раздел в памяти и поместил БД туда. Скорость возрасла раз этак в 5-10 как минимум.

Ох было бы у меня памяти 32 ГБ, положил бы тоже туда, но увы, у меня на весь сервер 2 гб.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
N
На сайте с 06.05.2007
Offline
419
#26
LEOnidUKG:
Я конечно понимаю вложенность запросов и т.п., но я знаю суть, что мускуль любит простые запросы, их я ей и даю.

mysql любит запросы тех, кто понимает что он, mysql, делает. и все.

LEOnidUKG:
А у меня

А у вас вообще результаты другие должны быть, судя по коду. Проверьте результаты на идентичность оригинальным и адекватность.

---------- Добавлено 23.02.2012 в 22:21 ----------

LEOnidUKG:
MySQL вернула пустой результат (т.е. ноль строк). ( запрос занял 4.0899 сек. )

теперь видно, что первоначальный запрос даже быстрее запроса построенного по вашей теории?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#27

netwind, действительно поторопился с выводами. Сейчас кэши очистил, разницы в скорости не увидил, что мой код на PHP, что запрос в БД.

N
На сайте с 06.05.2007
Offline
419
#28

LEOnidUKG, очистили кеши чего? mysql query cache или внутренние кеши сайта?

Если бы вы кешировали список ид по категориям и на основе этого кеша строили листалку страниц, то был бы толк.

Интересно было бы проверить как будет работать подобная листалка построенная на большом query_cache + mysql_unbuffered_query + mysql_data_seek. Эта связка может имитировать LIMIT без перекачивания к php всего списка идентификаторов в категории. Но вот кеш mysql очищается весь при любом изменении опорной таблицы. На практике скорее всего никто не использует подобное.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#29
LEOnidUKG, очистили кеши чего? mysql query cache или внутренние кеши сайта?

У сайта кэша нет. У меня там более 600 страниц в каждой категории я могу тыкать сколько угодна.

Я просто мускуль перезагрузил :)

Но по млин, визуально даже мой код быстрее работает. Скорее всего сказывается то, что ID категорий плотно зависает в индексе мускуля.

N
На сайте с 06.05.2007
Offline
419
#30

LEOnidUKG, но тогда вам удалось использовать кеш mysql и это можно назвать хорошим решением.

Все-таки, там именно тот код используется, что вы привели или другой ? Он ведь неверный и может выводить неправильные результаты.

Если это комментарии, то они из одной категории, отсортированы на каждой странице, но при листании страниц не отсортированы относительно этих страниц. Тянитолкай дело говорит.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий