netwind

Рейтинг
419
Регистрация
06.05.2007

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

уменьшайте лимиты ожидания, настраивайте greylisting, купите Communigate Pro :)

антиспам зачастую может вообще сервер "завесить"

у меня есть подобный сайт там 110 тыс комментов и 8 тыс фото c похожей структурой БД.

ну нету там никаких сортировок и временных таблиц.

Вот запрос примерно по-вашей методике :

explain select f.*,username as noteuser from `photo_comments` n left join `photo_photos` f on (f.id=n.photo) where n.rating=10.0 having f.approved=1 order by n.id desc limit 500,2;


+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-----------------------------+
| 1 | SIMPLE | n | ALL | NULL | NULL | NULL | NULL | 110103 | Using where; Using filesort |
| 1 | SIMPLE | f | eq_ref | PRIMARY | PRIMARY | 4 | xxxxxxx.n.photo | 1 | |
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-----------------------------+

а это до использования травы (having и left join) :

explain select f.*,username as noteuser from `photo_comments` n ,`photo_photos` f where f.id=n.photo and n.rating=10.0 and n.approved=1 order by n.id desc limit 500,2;


+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-------------+
| 1 | SIMPLE | n | index | photo | PRIMARY | 4 | NULL | 110103 | Using where |
| 1 | SIMPLE | f | eq_ref | PRIMARY | PRIMARY | 4 | xxxxxxx.n.photo | 1 | |
+----+-------------+-------+--------+---------------+---------+---------+-----------------+--------+-------------+

Сортировки нет!

Только вот точно оценить время я не могу. Получается примерно одинаково в обоих случаях от 0 до 1 сек.

Дисковый кеш и другие процессы сказываются. Да и 8мб данных это смех. Однако, я считаю, стоит верить explain-у.

там не VPS ?

Может вам mysql "разогнать" ? увеличить sort_buffer_size, join_buffer_size и тд?

Dimanych, честно говоря, не понимаю почему с HAVING это быстрее работает. Having без группировки в других субд вообще получается синтаксически неправильным.

может просто погрешности кеширования? вы в курсе про SQL_NO_CACHE ?

А если показать show create table будет просто удобнее воссоздать у себя и потестировать.

А еще ваш top показывает что mysql съел всего 32 мб памяти и памяти у вас очень много.

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

Dimanych, а если еще и left убирать? думаю, просто много данных в f и остается только тройной индекс создать

это сейчас или раньше?

приведите полные тексты запросов и explain к каждому. и лучше без этой гадости phpшной - глаза сломать можно.

По-моему, по умолчанию "FXP" нигде не работает.

По сути FXP не существует как протокол, но существуют сервера с отключаемой проверкой на адрес соединения с данными.

заходите на один из хостингов через ssh и изучайте консольный ftp-клиент.

там может случайно оказаться ncftp или lftp.

RAS, если было удобно - не было бы этой темы. неудобно.

например, вот эта древняя капча достаточно сложна и оформлена функциями : http://www.puremango.co.uk/cm_php_captcha_script_113.php

интегрируется куда угодно

Я подозреваю,что у вас все тормоза возникают на сортировке, которая выполняется во временных файлах. Возможно, если в explain пропадет "Using filesort" - будет эффект. Кстати, вас тут уже не просто так просили показать explain запроса.

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

Всего: 6293