[Перевод] Проблема со связанными переменными: как превратить оптимизатор из врага в друга

Автор статьи – Виктор Варламов, OCP.
Оригинал статьи опубликован 07.07.2017.
Отдельное спасибо автору перевода — brutaltag.

В нашей системе подготовки отчетности обычно выполняются сотни длительных запросов, которые вызываются различными событиями. Параметрами запросов служат список клиентов и временной интервал (дневной, недельный, месячный). Из-за неравномерных данных в таблицах один запрос может выдать как одну строку, так и миллион строк, в зависимости от параметров отчета (у разных клиентов — различное количество строк в таблицах фактов). Каждый отчет выполнен в виде пакета с основной функцией, которая принимает входные параметры, проводит дополнительные преобразования, затем открывает статический курсор со связанными переменными и в конце возвращает этот открытый курсор. Параметр БД CURSOR_SHARING выставлен в FORCE.
В такой ситуации приходится сталкиваться с плохой производительностью, как в случае повторного использования плана запроса оптимизатором, так и при полном разборе запроса с параметрами в виде литералов. Связанные переменные могут вызвать неоптимальный план запроса.
Читать дальше →
[Перевод] Проблема со связанными переменными: как превратить оптимизатор из врага в друга
Source: habrahabr

Пост №3767658

Автор: Korvinus78

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3767658″ }, «headline»: «реактор-тян :: пиратка :: реактор :: фотошоп», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D1%82%D1%8F%D0%BD-%D1%80%D0%B5%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%BF%D0%B8%D1%80%D0%B0%D1%82%D0%BA%D0%B0-%D1%84%D0%BE%D1%82%D0%BE%D1%88%D0%BE%D0%BF-4920006.jpeg», «height»: 768, «width»: 1024 }, «datePublished»: «2018-12-26T12:40:13+03:00», «dateModified»: «2018-12-26T12:40:13+03:00», «author»: { «@type»: «Person», «name»: «Korvinus78» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767658
Source: Joyreactor

Пост №3767656

Автор: eshborn

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3767656″ }, «headline»: «карман :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки) :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82%D1%8D-%D0%BA%D0%B0%D1%80%D0%BC%D0%B0%D0%BD-4920004.gif», «height»: 380, «width»: 284 }, «datePublished»: «2018-12-26T12:35:54+03:00», «dateModified»: «2018-12-26T12:35:54+03:00», «author»: { «@type»: «Person», «name»: «eshborn» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767656
Source: Joyreactor

Пост №3767655

Автор: eshborn

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3767655″ }, «headline»: «ноги :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки) :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82%D1%8D-%D0%BD%D0%BE%D0%B3%D0%B8-4920003.gif», «height»: 400, «width»: 320 }, «datePublished»: «2018-12-26T12:33:26+03:00», «dateModified»: «2018-12-26T12:33:26+03:00», «author»: { «@type»: «Person», «name»: «eshborn» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767655
Source: Joyreactor

Производительность Excel на чистом Javascript — достижима

Привет Хабр!

Продолжаем битву за производительность Javascript на примере построения сводных таблиц. В прошлый раз камнем преткновения стал асинхронный интерфейс IndexedDB, который, используя межпоточный вызов для каждой записи курсора, работает чудовищно медленно. Решив эту проблему путем организации крупноблочного хранения, а также применив все известные оптимизации, мне удалось поднять производительность приложения в 20 раз, и в настоящее время расчет по хранилищу в 1 миллион фактов занимает 21 секунду, что потенциально дает надежду догнать Америку Excel, который обрабатывает тот же миллион строк за 5..7 секунд.

Однопроходный алгоритм, не использующий индексы и вложенные запросы, отлично ложится на блочную схему хранения данных, и, самое обнадеживающее — позволяет распараллелить расчет по разным потокам (воркерам), по сути повторяя алгоритмы «взрослых» СУБД. Таким образом — возможности по оптимизации далеко не исчерпаны. В настоящее время расчет производится лишь одним воркером, WASM не используется, результаты «милионного» теста на различных браузерах следующие:

Браузер Время
Chomium Linux 21 сек
Firefox Linux 51 сек
Chrome Android 29 сек
Firefox Android 62 сек

В приложении доступен генератор тестовых данных, также можно загрузить собственный JSON и проверить цифры. Приложение в глубокой бетте, так что ошибки должным образом не обрабатываются, простите. Под катом — несколько кейсов по ускорению WEB-приложений, которые, конечно, все являются банальностями и очевидностями, просто я, как любитель учиться на собственных ошибках — их проверил, зафиксировал, и теперь стараюсь соблюдать.
Читать дальше →
Производительность Excel на чистом Javascript — достижима
Source: habrahabr

Пост №3767654

Автор: Путница

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»http://mlp.reactor.cc/post/3767654″ }, «headline»: «mlp OC :: Batpony (Бэтпони) :: mlp gif :: my little pony (Мой маленький пони) :: фэндомы», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/mlp-gif-my-little-pony-%D1%84%D1%8D%D0%BD%D0%B4%D0%BE%D0%BC%D1%8B-mlp-OC-4920002.gif», «height»: 400, «width»: 226 }, «datePublished»: «2018-12-26T12:29:28+03:00», «dateModified»: «2018-12-26T12:29:28+03:00», «author»: { «@type»: «Person», «name»: «Путница» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767654
Source: Joyreactor

Пост №3767649

Автор: Raizel Knight

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3767649″ }, «headline»: «корпоратив :: Буквы на фоне :: настало время ахуительных историй», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%80%D0%BF%D0%BE%D1%80%D0%B0%D1%82%D0%B8%D0%B2-%D0%91%D1%83%D0%BA%D0%B2%D1%8B-%D0%BD%D0%B0-%D1%84%D0%BE%D0%BD%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D0%B0%D0%BB%D0%BE-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-%D0%B0%D1%85%D1%83%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B9-4919996.jpeg», «height»: 1280, «width»: 827 }, «datePublished»: «2018-12-26T12:24:46+03:00», «dateModified»: «2018-12-26T12:24:46+03:00», «author»: { «@type»: «Person», «name»: «Raizel Knight» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767649
Source: Joyreactor

Оценка и планирование в программных проектах — без купюр

Друзья, добрый день!

Мы продолжаем серию публикаций «без купюр» о проектах, связанных с разработкой, часто с приставкой «веб». Сегодня поговорим о том, как наиболее правильно и быстро проводить оценки работ и планировать релизы программной системы. Скорее всего, начинающие менеджеры и энергичные и ищущие себя разработчики будут шокированы рекомендациями, но, поверьте — цель стоит одна и только одна: помочь и сделать из вас настоящего джедая, который и пользу компании приносит, и проекты двигает, да и людей развивает одновременно. Такого джедая, который искренне не заслуживает быть обнаруженным в виде мумии в темной серверной между стойками с веб-серверами и базами данных веб-проекта, летящего в будущее без душевно документированного кода, ТЗ — лишь на энергии чистого «ХЗ». Итак, поехали!
Читать дальше →
Оценка и планирование в программных проектах — без купюр
Source: habrahabr

НЕпрогноз на 2019 год

Ещё с прошлого месяца на Хабре, да и на других сайтах, стали появляться прогнозы о том, что нас ждёт в 2019 году: кто-то пишет про свои новые фичи, кто-то про тренды рынка, думается, что будет много итогов и споров о том, за какими технологиями окажется наступающий 2019-й. Конечно, все мечтатели и визионеры ждут прорывов в AI, VR, BigData, а реалисты — новых роботов от Boston Dynamics и сюрпризов от регуляторов. Мы тоже ждём роботов, уж очень они прикольные. А сегодняшний пост мы хотим посвятить тем вещам и принципам, которые должны переходить из года в год и никогда не исчезать из трендов (некоторые, увы, исчезают). Итак, наш непрогноз.


Источник. Просто у нас, как во всех порядочных IT-конторах, есть свой шаман (опционально — чукча), особенно, когда винды ёкхэрэ.
Читать дальше →
НЕпрогноз на 2019 год
Source: habrahabr

Пост №3767637

Автор: Orvus

sailing into the windsРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3767637″ }, «headline»: «sailing into the winds / красивые картинки :: Fantasy (Fantasy art) :: Mathieu Seveno :: art (арт)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D1%8B%D0%B5-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8-art-Fantasy-Mathieu-Seveno-4919984.jpeg», «height»: 926, «width»: 1920 }, «datePublished»: «2018-12-26T12:05:47+03:00», «dateModified»: «2018-12-26T12:05:47+03:00», «author»: { «@type»: «Person», «name»: «Orvus» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3767637
Source: Joyreactor