ORDER BY RAND() кладет сервак

7
906

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

А дело было в следующем несложном запросе MySQL:

SELECT * FROM mybigtable ORDER BY RAND()

В зависимости от сайта (в основном это были магазины на основе shopxml) таблица, из которой делалась выборка (нужно было 2-20 случайных позиций), содержала от 100 до 60 000 записей. В моменты особой активности пользователей и поисковых роботов на сервере наступали темные часа — load_average: 30 — это, как известно, крайне неуютная нагрузка.

Решилось все довольно просто: сначала генерируем нужное количество случайных чисел, затем делаем из них индексы (в некоторых случаях, индекс таблице начинается не с нуля), а потом просто получаем нужные записи.

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

PS. Уже не первый раз мне очень помогают поднять сервер и улучшить скрипты сотрудники службы поддержки HQhost.

7 КОММЕНТАРИИ

  1. чёрт не на ту кнопку нажал,
    у меня хостер дешевле, при такиж аппаратныйх ресурсах.К сожалению других комментариев нет. Так вот мой хостер дешевле и «лучше» infobox.ru. Субъективно конечно всё.

  2. Неплохой хостер, видел, что его хвалят на некоторых форумах. Но он в России. А мне нужно под амеров…

  3. HQhost наверное самый хороший хостинг, просто везде его хвалят 🙂 Но когда мне нужен был сервер, я про него еще не знал, да и мне ру надо было, и как раз сервер был взят в инфобоксе (именно этот факт и побудил меня написать данный коммент).

    В общем гемора я с этим инфобоксовым сервером схватил очень много. Был случай, когда он почти трое полных суток пролежал в дауне. Бомбил все суппорты которые только смог найти, нихрена сделать вовремя не смогли. Сколько можно потерять денег изза такого простоя вы наверное догадываетесь. Никакой конмпенсации естественно не получил, как и банальных «извините».
    Ну и постоянные мелкие проблемы в их датацентре вообще уже задолбали, то одно там ломается, то второе, то перенос ипов какой то, изза чего сервер пол дня глючит как пьяную мартышку, то какой то апдейт чего то там, после чего опять же несколько часов сервер недоступен и пр., и т.п. и др.

    Знаю в принципе людей у которых там сервера, не у всех такие косяки, мне видимо «везло» на неприятности. Но опять же вспоминая как мне отвечал их суппорт(отписка типа «работы ведутся», а сервер так и пролежал 3 дня, а «работы велись»), я бы закончил мысль так: «не ходите за серверами в инфобокс» 🙂

  4. Серваки — это вообще серьезная тема! У меня сервера у 4 хостеров… мало ли чего 🙂

  5. HQhost наверное самый хороший хостинг, просто везде его хвалят 🙂 Но когда мне нужен был сервер, я про него еще не знал, да и мне ру надо было, и как раз сервер был взят в инфобоксе (именно этот факт и побудил меня написать данный коммент).

    В общем гемора я с этим инфобоксовым сервером схватил очень много. Был случай, когда он почти трое полных суток пролежал в дауне. Бомбил все суппорты которые только смог найти, нихрена сделать вовремя не смогли. Сколько можно потерять денег изза такого простоя вы наверное догадываетесь. Никакой конмпенсации естественно не получил, как и банальных «извините».
    Ну и постоянные мелкие проблемы в их датацентре вообще уже задолбали, то одно там ломается, то второе, то перенос ипов какой то, изза чего сервер пол дня глючит как пьяную мартышку, то какой то апдейт чего то там, после чего опять же несколько часов сервер недоступен и пр., и т.п. и др.

    Знаю в принципе людей у которых там сервера, не у всех такие косяки, мне видимо «везло» на неприятности. Но опять же вспоминая как мне отвечал их суппорт(отписка типа «работы ведутся», а сервер так и пролежал 3 дня, а «работы велись»), я бы закончил мысль так: «не ходите за серверами в инфобокс» 🙂

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here