powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация интерактивного 3-звенника
15 сообщений из 40, страница 2 из 2
Оптимизация интерактивного 3-звенника
    #40006694
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLУ меня есть требование сохранить поиск по Ctrl-F

Значит придётся программировать background fetch.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006695
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мой подход (отделить/сузить запрос до необходимых колонок, отделить форму выбора заказчика от тяжеловесной формы редактирования реквизитов заказчика) принес некоторые результаты, но не дотягивает до цели в 0.5-1 секунды, и не является универсальным.

Список заказчиков - это только один из списков. Существуют другие списки, где сотни тысяч строк, и которые клиент сегодня тоже позволяет вывести на экран (в том числе и для экспорта в эксель). Даже если я экстраполирую свой подход на те случаи, получается время порядка 30-40 секунд. Сегодня неудачно выставленный фильтр может подвиснуть "экран большой таблицы" на 30-40 минут.

Думаю, как сделать за полсекунды.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006708
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

НеофитSQLУ меня есть требование сохранить поиск по Ctrl-F

Значит придётся программировать background fetch.


Да, похоже на это.

Самое очевидное для меня решение - не строить форму/грид/запрос с нуля каждый раз,
а показать спрятанную с прошлого раза, и уже после показа обновить по дельте (маленкий фетч).
Кэширование грид контроля (а не только датасета) позволяет избежать задержек его исполнения.

Затрудняет вопрос вычисления дельты между клиентом и еще неосуществленным запросом.
Возможно что для этого, как для инкрементальных апдейтов материализованных представлений,
есть готовые решения, но я пока ничего не нагуглил.

Запрос в общем случае считается тяжеловесным, секунды.
Дельта-запрос который касается только измененных строк - на 2-3 порядка быстрее,
но чтобы построить дельта-запрос, надо знать какие строчки, а для этого нужен полный запрос.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006713
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov
НеофитSQL
Замер 1: исключить сеть как фактор.
...
Вывод 1 : сеть не является фактором, т.к. в один мегабайт помещается 20 тыс строчек, а мегабайт по гигабитам летает быстро.
Феерическая бредятина, полностью игнорирующая задержки. В том числе - задержки (прикладного) протокола.
А ещё есть пропускная способность, измеряемая пакетами в секунду. И которая не зависит от размера пакета.


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

Что важно, я упомянул: сеть пропускной способностью в гигабиты, все компоненты звена в одном дата центре, и измерение данных показало, что в них не попала "шелуха", т.е. их размер сочетается с моими ожиданиями. Соответственно, места для оптимизации на стороне сети мало. То, что есть, работает близко к оптимальному режиму для моей задачи.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006726
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no comment

Т.к. никакие comment без перехода на личности просто не возможны. IMHO


Basil A. Sidorov,
+++++
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006729
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде, придумал. Основано на книжных знаниях, поэтому как получиться - покажет практика.

Исходные: медленный запрос "заказчики" с 20 тыс строк на 100 колонок, многие вычисляемые
Исполнение запроса: 10сек. Обработка на сервере - пренебрегаем (около 0.1 сек), заполнение контролов и грида - 2 сек.
Все вместе, если тянуть все колонки - 12 сек. Если тянуть только дешевые колонки - 2 сек (SQL срабатывает мгновенно)
Цель - моментально показать список заказчиков, с возможностью показа некоторых медленно вычисляемых полей.

Шаг 1: заменить медленный запрос на materialized view, "fast update on commit". Мой 11.2 вроде это умеет.
Теперь SQL сам будет построчно править вью, поддерживая полный список заказчиков готовым для запроса.
Это почти до нуля снижает скорость запроса, общее время - 2 сек из-за медленных виджетов клиента.

Шаг 2: Научить клиента вместо убивать/создавать форму, прятать/показывать собранную форму и само-синхронизироваться с (1).

Если не найду грид-виджет с само-синхронизацией, остается вариант более трудоемкой дельты вручную:

Шаг 3: раз в сутки(неделю, час) снять копию данных materialized view. Назовем их "ночной список заказчиков". От ночного списка строятся дельты.

Шаг 4: Научить клиента принимать дельты для построчной коррекции.

(1) проще всего. (2) выходит за рамки раздела Оракла. (3) может быть тоже materialized view, update on demand

Это должно позволить вызвать поп-ап за <= 0.2 секунды, что в глазах пользователя приравнивается к мгновенному.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006731
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полностью присоединяюсь к первым двум словам
22211027
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006732
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный подход:
1. Поискать на данном форуме про СУБД Стебелек
2. Мигрировать данные в СУБД Стебелек
3. Использовать ее вместо Oracle

IMHO & AFAIK
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006735
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пойдем с козырей.

CQRS уже предлагали?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006738
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно
книга Миллсапа всё еще считается актуальной?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006770
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После нескольких неудачных попыток, получилось создать первое представление с "fast update on commit".

Написал пару скриптов из двух сессий, пытаясь "споймать" промежуток времени между обновлением таблиц-источников, и обновлением моего представления, не словил. Ощущение, что обновление происходит синхронно.

Материализованные представления почему-то описываются в контексте "складов данных", непохоже что они используются часто в других ситуациях, но вот пригодилось. В моем случае, эта фича работает в точности как я ожидал, в 10 раз ускоряя клиентский запрос.

Были дополнительные улучшения в этой области в 12.х (возможность записи в материализованное представление), но придется с ними повременить.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006782
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что тут новых клоунов завезли?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006805
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter
Что тут новых клоунов завезли?

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

НеофитSQL
Ощущение, что обновление происходит синхронно.

обновление происходит синхронно, и прямо замедляет фиксацию пищущей транзакции. иногда - достаточно критично 15514366 , поэтому со сложными матвью надо быть аккуратным. ну и много других подводных камней, конечно.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006818
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Материализованные представления почему-то описываются в контексте "складов данных"

Потому что в "хранилищах данных" (устоявшийся перевод) чаще возникает необходимость материализации тяжёлых запросов с агрегатами для последующего использования query rewrite.

Мат вью имеют свои ограничения, в том числе по последующему изменению структур таблиц источников, на которые вешается мат вью лог. Подробнее описано в доке.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40007165
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поделюсь, что узнал и испытал про MV.

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

Когда я добавил оптимизированные обновления по SCN, появились доп ограничения, довольно эзотерические.

Например, если есть селф джойн, то запрещен внешний джойн. Анси джойн просто запрещен для refresh fast on commit with SCN. Пришлось плюсики ставить.

В итоге, скорость чтения возрасла в пять раз (согласно autotrace), скорость записи не проверял, т.к. они строка в минуту или меньше.

За бортом остались тяжеловесные колонки, все из которых скрыты по умолчанию. До того как развернуть кампанию по оптимизации запутанной фигни, я пролоббирую за их удаление(если ненужный артифакт), или хотя бы перенос в планируемый раздел медленных запросов, где можно найти все, если подождать.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация интерактивного 3-звенника
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]