Previous Entry Share Next Entry
(no subject)
bad bad
bugabuga

Мда. Сижу, можно сказать, в башне из слоновьей мамонтовой кости и гляжу вниз на ров, в котором плещутся крокодилы.
Очередной прикол от крокодилов -- общение с базой данных в стиле женщины из юморески (открыла кошёлку, вынула сумочку, закрыла кошёлку, открыла сумочку, вынула косметичку, закрыла сумочку, открыла кошёлку, положила туда сумочку, закрыла кошёлку, открыла косметичку, вынула кошелёк, закрыла косметичку, открыла кошёлку, достала сумочку, закрыла кошёлку, открыла сумочку, положила косметичку, закрыла сумочку ... ... ... ... ...). Вот по такому-же алгоритму крокодилы ведут выбор данных :) открыли соединение, кинули в базу данных запросом, прочитали ответ, закрыли соединение, открыли соединение, кинули в базу данных слегка изменённым запросом, прочитали ответ, закрыли соединение...
Итого для изготовления одного графика полторы ТЫСЯЧИ запросов. Построенных на лету из кусочков строк с результатами запроса в другую таблицу. В которой живёт несколько миллионов записей, не проиндексированных (сюрприз!) по полю, по которому идёт выбор данных.

Волосы встали дыбом на всю длинну и не укладывались до конца рабочего дня. В ответ на вопрос "А ЗАЧЕМ?!" категорично сказали, что иначе никак ("потому, что выборка данных из таблицы А зависит от данных в таблице Б"). Нарисовал на доске запрос, в который легко свернулась вся схема, ушёл горевать под грибок в садик.

Или я не понимаю чего-то чрезвычайно грандиозного, или это наверняка приведёт к очередной "оптимизации скорости выполнения запросов в 20 раз" :) (в прошлый раз это был Prefetch :) )

Надо будет пересмотреть свой старый код -- наверняка такие-же ужасы найду :)

  • 1

Захочешь их повозить мордой по столу,

запусти это через WAN. Традиционный coast-to-coast round trip time в 100ms вполне подойдет. Эта график будет строится 3 минуты как минимум.

Re: Захочешь их повозить мордой по столу,

Хи-хи. Это уже было. База данных в Германии и roundtrip там был чуть больше 100мс :) График строился 15 минут. В ответ на вопрос "а Preferch на сколько записей поставлен" сделали большие глаза "а что такое prefetch?" Так что под грибком я уже сидел :(

Если они полторы тысячи соединений устанавливают, никакой prefetch не поможет. Два RTT на syn/syn-ack/ack вынь да положь. С Германией RTT с west coast где то 180ms. 360ms * 1500 = 9 минут только на это уйдет.

c Германией они просто пытались прочитать нечто вроде 200к записей :)

Клевые новые юзерпики :)

Re: Не в тему

Спасибо :) Заметил, что они дают больше бесплатных картинок, и наковырял/наанимировал из vgcats.com :)

что-то у тебя слишком часто новые крокодилы. Консультантом, что ли, работаешь? :)

Ага :) Крокодилов, правда, везде хватает :)

  • 1
?

Log in

No account? Create an account