- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Хостер заблочил БД и просил оптимизировать запросы:
UPDATE bb_sessions
SET session_user_id = -1, session_start = 1232545451, session_time = 1232545451, session_page = 0, session_logged_in = 0, se
ssion_admin = 0
WHERE session_id = ''
AND session_ip = '3e2142fe'
И таких
UPDATE bb_config SET
config_value = 'eb34e0fa11491e23bd320c2e2a4ec482'
WHERE config_name = 'rand_seed'
Данные запросы вызывают нестабильную работу нашей базы данных.
Оптимизируйте, пожалуйста, данные запросы.
На данный момент, база данных разблокирована.
Апдейты (Update) всегда больше нагружают сервак, но иногда без них не обойтись
Первый апдейт явно обновляет наличие пользователя (сессию) на сайте.
А второй запрос пока не знаю что делает.
Кто что посоветует сделать? ...сайт на phpbb2 plus
Для начала покажите
show create table bb_sessions;
select count(*) from bb_sessions;
Неплохо бы переодически помониторить show proccesslist, чтобы убедиться какие запросы нагружают сервер на самом деле. Не доверяю я этим словам.
Апдейты (Update) всегда больше нагружают сервак, но иногда без них не обойтись
Первый апдейт явно обновляет наличие пользователя (сессию) на сайте.
Делайте UPDATE не при каждом дёргании страницы, а только когда сессия скоро "протухнет". Или раз в пять-десять минут. То есть UPDATE станут в основном SELECT-ами, а последние работают значительно быстрее. И, мне кажется, в этом UPDATE достаточно обновлять лишь session_time = 1232545451.
Если таблица таблица в памяти enigine=memory, то это все ерунда. по крайней мере в vbulletin никто не спешит убирать подобный же запрос и он никогда не тормозит.
Если таблица таблица в памяти enigine=memory, то это все ерунда. по крайней мере в vbulletin никто не спешит убирать подобный же запрос и он никогда не тормозит.
В memory своя проблема - запись идёт значительно дольше, чем чтение. Хотя да, лучше эту таблицу держать в памяти.
Слава Шевцов, ну с чего бы ей тормозить?
обычные запросы используют такие таблицы неявно в качестве временного хранилища и ничего никто не замечает.
Слава Шевцов, ну с чего бы ей тормозить?
Фиг его знает. Тесты показывают, что скорость чтения записи из хешевых таблиц раз в пять выше, чем обновление записи в них же. Хотя в чём там дело - сам понять не могу.
Фиг его знает. Тесты показывают, что скорость чтения записи из хешевых таблиц раз в пять выше, чем обновление записи в них же. Хотя в чём там дело - сам понять не могу.
думаю, дело то как раз в том что таблица адресуется хешами. Для поиска данных в ней используется один шаг, грубо говоря, а для вставки - от 1 до бесконечности в зависимости от размера таблицы и используемой хеш-функции. Но это должна быть жирная таблица, навскидку больше 50 тыщ записей. Временные таблицы в пуле при селектах довольно мелкие как правило. Редко кто-то передает в скрипт хотя бы тысячу записей. А апдейт еще более затратный в связи с необходимостью пересчета таблицы адресации. Если сессии давно не чистились, то там наверное ОЧЕНЬ большая таблица поэтому и тормоза на апдейте.
Поскольку в данном случае сам запрос оптимизировать уже некуда (кол-во записываемых полей имеет минимальное значение, в отличие от кол-ва полей сверки), остается минимизировать число его вызовов. Возможно, действительно стоит задумываться об обновлении сессии не на каждом переходе, а за N времени до её окончания. и ессно добавить один запрос select чтобы найти таковые, и в случае ненадобности, отсечь вызов апдейта.
Но вообще меня удивляет какие то претензии хостера к phpbb2. Сколько их запустил-поставил, ни разу не было жалоб.
Слава Шевцов, а тест у вас сильно параллельный был? дело в том, что там блокировка глобальная на всю таблицу. попробуйте на один из тысячи запросов записывать show profile и, возможно, увидите в чем дело. Есть еще патчи где slow_log записывает миллисекунды и , что очень важно в таких случаях, время, которое запрос ожидал блокировки.