2 окт. 2014 г.

Как Ларри Элиссон искал Путина. Записки in-memory скептика

На OOW очень много говорят об опции database in-memory option. Игорь про нее рассказывал. Она ускоряет работу аналитических приложений без их переписывания. Ускорение достигается за счет многих механизмов - одновременное построчное и поколоночное хранение табличек в памяти, использование векторных команд процессора, новые алгоритмы построения агрегирующих отчетов, прунинг (storage index), преобразование join в набор операций фильтрации колонок, bloom filters и т д.
На всех выступлениях говорят про ускорение аналитических запросов в 100 раз, а потом показывают слайды, где приложения ускоряются в 1000, 2000, 3000 раз. Как такое может быть? Конечно механизмы понятные и работу Select ускоряют, ну в 2-3 раза, ну в 5-10 раз, но как может быть тысяча, непонятно. Я даже подумал, что это достигается за счет неявного result cache - сначала запрос считался час, а потом результат взяли за секунду - вот и тысячи. Но оказалось все не так

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

Взяли таблицы с миллионами записей и написали простой запрос - соединение, условие на выбор диапазона значений и сумма по колонкам
Тестировали на Exadata. Вначале честно отключили все механизмы ячеек (offload) и In-memory. Были только обычные индексы. Запрос работал 4,5 мин. Потом заставили делать чтение вперед и full buffering, стало работать быстрее, но все равно основное время шло на ввод-вывод
Потом включили механизмы Exadata - стал работать 2 секунды
А потом включили еще и In-memory - все выполняется за 0,1 сек. Т е с 4.5 мин до 0.1 сек и без трюков и фокусов (хотя in-memory cache конечно разогрели) Результаты впечатляют

Теперь про Путина. Ларри демонстрировал как быстро работает запрос с In-memory. Закачали в БД кучу данных об упоминании разных людей в прессе. Миллионы записей. И сделали поисковую системку. Вводишь имя и на экране появляется график кол упоминаний в час для каждого дня года.
На экране было 2 области - в верхней показывали результат, полученный с in-memory, а в нижней - тот же запрос работал без нее. Результат поиска всегда был одинаков. В верхнем окне график появлялся мгновенно, в нижнем медленно и лениво полз от даты к дате.
Вначале Ларри поискал инфо по упоминанию Федерера. In-memory отработал мгновенно, потом поискал еще кого-то, результат тот-же. А потом сказал, для тех кто не верит давайте поищем инфо еще о ком-то. И тут из зала ему сказали Путин. Ларри набрал в поисковой строке putin и результат с in-memory опять появился мгновенно, а на нижнем графике он полз, полз, и в конце концов начали искать еще кого-то

Т е In-memory option действительно работает и действительно драматически ускоряет работу существующих аналитических приложений

Комментариев нет:

Отправить комментарий