Повторное использование кэша QlikView (или нет) через передний край QVW

В недавнем блоге QlikView Design Blog (The QlikView Cache), Хенрик Кронстроьом написал:

Кэш является глобальным. Он используется всеми пользователями во всех документах. Кэш не относится к конкретному документу или к одному пользователя. Таким образом, если пользователь выбирает что-то, что уже было выбрано другим пользователем, то кэш используется. И если у вас есть те же данные в двух различных приложениях, то одна запись в кэше может быть использована для обоих документов.

Основываясь на своем опыте, я написал:

Я был бы удивлен, узнав, как запись в кэше может использоваться в нескольких документах, учитывая, что в QlikView повторно не использует даже то же выражение, сгруппированные по той же размерности в различных типах диаграмм в пределах одного приложения. Пример: прямая таблица с Суммой (Продажа) Заказчика и гистограмма с Суммой (Продажа) Заказчика рассчитываются независимо друг от друга в одном приложении. По крайней мере, это было так, когда я испытывал более раннюю версию 11.0.

Хенрик ответил:

Кэш может использоваться в нескольких документах и мой опыт показывает, что так и происходит. Если у вас случалось, что та же комбинация размера и выражения не использовала один кэш, то, вероятно, причина была в том, что выражение (или рассчитанный размер) были по-разному записаны в двух местах. Либо это, либо Вы обнаружили баг. Потому что записи кэша должны быть повторно использованы …

Прошло несколько лет и, я думаю, пришло время для повторного тестирования 11.2 SR5. Вот каким образом я генерировал данные для примера:

Base:
LOAD 'C' & Left(RowNo(),1) как Страна,
Left(RowNo(),4) as OrderID,
Round(Rand()*500) как Продажи,
Round(Rand()*30) as UnitCost,
Round(Rand()*10) как Количество
AUTOGENERATE 100000000;

(Вы можете генерировать меньше рядов.)

Это моя диаграмма. Все диаграммы были созданы путем копирования и вставки Прямой Таблицы, так что нет никакой возможности для дисперсии в написании выражений.

  • Измерение: Страна
  • Выражение 1 (Средний Заказ Продаж): Сред(Aggr(Сум(Продажа),ЗаказID))
  • Выражение 2 (Индекс Среднего Заказа Продаж): Сред (Aggr(Сума(Продажа),ЗаказID)) / Сред (ОБЩАЯ Aggr(Сум(Продажа),ЗаказID))

Листы на переднем краю:

  1. Целевая страница (пустая)
  2. Прямая таблица с одним измерением и двумя выражениями
  3. Копирование Прямой Таблицы (не связанное)
  4. Копирование Прямой Таблицы, изменено в комбо график
  5. Копирование Прямой Таблицы с отключением второго выражения

Тест состоял в том, чтобы прощелкать листы в последовательности, и ознакомиться с временем расчёта объектов на каждом листе. Я проделал это три раза, и вот средние результаты:

Рис 1

Вот два вывода, которые могут удивить Вас в работе кэша:

  • Копия графика мгновенно рассчитывает кэш оригинального графика при копировании диаграммы, меняется лишь тип диаграммы и занимает значительно больше времени, хотя и не так много, как в оригинале. Другими словами, кэшированные результаты одного типа диаграммы не появляются, чтобы создать те же мгновенные результаты в других типах диаграмм, несмотря на то, что у них одни и те же меры и измерения.
  • Даже я был удивлен, обнаружив, что копия графика с одним из отключенных выражений не использует кэш исходного графика.

Эта информация, в сочетании с тем, что QlikView не может распознавать два выражения одновременно, на самом деле означает то же самое и приводит меня к мысли, что кэш мало способен на улучшение производительности в объектах приложения, создавая содержательную разницу только при пересчете диаграммы основанной на ее собственном кэше. Опять же, я сомневаюсь, что в настоящее время QlikView способно на эффективность кэша всех приложений, основываясь на данных результатах, и я вижу, что есть другие области, где могла бы быть проведена оптимизация работы. А именно, если бы можно было повторно использовать кэш в пределах приложения и лучше распознавать, когда выражения написаны по-разному, но является одинаковыми, клиенты могли бы видеть существенные выгоды в производительности без всяких дополнительных усилий с их стороны в обновлении программного обеспечения сервера.

 

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

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

67 queries in 0,510 seconds