powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация интерактивного 3-звенника
40 сообщений из 40, показаны все 2 страниц
Оптимизация интерактивного 3-звенника
    #40006647
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скоро буду участвовать в проекте ускорения работы кастом клиента-терминала.
Архитектура традиционная 3-звенная: Win32 клиент на стареньком Дельфи - Вин32 сервер на нем же - Оракл 11.2
Сотни интерактивных Windows клиентов на медленном железе через один апп сервер доступаются к одной базе.

За терминалами сидят живые люди, которых раздражают задержки и подвисания. Нажатие кнопки может привести к 10-секундному ожиданию, что неприемлемо. Клиенты (виртуально) находятся в одном дата центре с серверами, поэтому сеть между клиентами и серверами считается очень быстрой.

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

Для разминки, выбрал конкретный сценарий и сделал несколько замеров скорости, а также написал немного предварительного кода.

Сценарий: список заказчика, который выскакивает по кнопке "выбрать заказчика".
Лучшее время: 300-500 строк за 3-5 секунд (если уже выбран фильтр)
Худшее время: десятки тысяч строк за 30-60 секунд (если фильтр отключен)

Для интерактивных приложений, UI считается "мгновенным" если укладывается в 200 миллисекунд, и "быстрым" если < 500мс.
При длительности ожидания более 200мс принято показывать индикатор занятости, обычно курсор, это уже делается.
При длительности ожидания более секунды (это уже плохо) желательно показывать индикатор прогресса

Начальная цель: уложиться в одну-две секунды для всех значений фильтра.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006649
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где тут "Архитектура традиционная 3-звенная" ?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006650
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

А при чем тут Оракл?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006651
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

НеофитSQL
десятки тысяч строк за 30-60 секунд (если фильтр отключен)

Какой сакральный смысл в передаче десятков тысяч строк на клиента?

Начните с редизайна приложения, если оно постоянно таскает десятки тысяч строк в фильтры, то его явно надо менять.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006653
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Начальная цель: уложиться в одну-две секунды для всех значений фильтра.

Невозможно фактически

Т.к. фильтров может быть бесконечно много, то уложится можно только в бесконечно-многое кол-во секунд. По определению. Так же по определению, время выполнения работы (и зарплата) приблежается к бесконечности.

Готов сделать данную работу за Вас. Даже не требую бесконечной оплаты, хватит сотни тысяч рублей в месяц. Но сделаю, разумеется, за бесконечно большое время. Тестирование на совести заказчика, но так как работа мною никогда не будет закончена - то это не проблема )))
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006655
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае без изменения приложения не получится. Либо кэшировать такие справочники на клиенте сервере приложений, заливая при запуске и время от времени синхронизируя дифф, либо менять подход и не тащить на клиента больше полусотни строк.

Можно сделать "умный" фильтр + пейджинг, который будет подтягивать только нужную страницу.

Если приложение трогать нельзя, то бегите оттуда посмотрите в сторону result cache, но это надо уметь готовить не панацея.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006657
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал с замеров, чтобы понять где и что тормозит.

Замер 1: исключить сеть как фактор.
Ранее упоминалось что сеть считается очень быстрой и не потребует оптимизации.
Предположения полагается проверять, поэтому мой сотрудник, системный администратор исключительных талантов, помог сделать замеры объема сетевого трафика. Получилось около 50 байтов на строку (используется сжатие между клиентом и сервером).
Вывод 1 : сеть не является фактором, т.к. в один мегабайт помещается 20 тыс строчек, а мегабайт по гигабитам летает быстро.

Замер 2: скорость железа клиента как фактор
Замеры показали что скорость сценария зависит от скорости железа. Разница между "стандартным" и "самым быстрым" примерно вдвое.
Вывод 2 : оптимизация кода на клиенте имеет смысл, и скорее всего будет необходимой.

Замер 3: скорость исполнения запроса на сервере.
Запрос достаточно сложный, сотни строк и десяток таблиц. Немного поломал голову, как исполнить запрос без вывода данных на экран, наконец нашел "set autotrace traceonly". Получил пять секунд для полного запроса на все имеющиеся строчки.
Вывод 3 : для достижения цели будет необходимо изменить запрос.

Замер 4: влияние среднего звена на общую задержку
Этот замер отложил, т.к. код сервера законсервирован. Влияние возможно есть, оно будет известно лучше после оптимизации кода клиента и запроса. Уточнил у своего гуру, что архитектура "store and forward", т.е без пайплайнинга (результат запроса отдается серверу одним куском, а потом тот отдает его клиенту). Без пайплайнинга время исполнения SQL запроса и время получения/рендеринга текста на экране складываются в общую паузу ожидания, и эффект оптимизаций тоже складывается.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006658
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Какой сакральный смысл в передаче десятков тысяч строк на клиента?

Если допустима binary сортировка, и клиент не делает fetch all, то проблемой не является.

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

IMHO & AFAIK
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006659
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Да тут сразу понятно что дело труба, на древнем 32-х разрядном сервере крутится сервер приложений на Дельфях и Оракл, пытаться что то выкрутить тюнингом запросов или кешированием на стороне Оракла (кешировать все равно некуда будет, памяти то на древнем сервере нет) бессмысленно занятие, совет "бегите оттуда" реально самый здравый))
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006660
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Судя по замерам - фетч там полный
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006661
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вщте ауув екщдд :)
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006662
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Судя по замерам - фетч там полный

или Order by
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006664
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Запрос достаточно сложный, сотни строк и десяток таблиц.

Это всё ещё про

НеофитSQL

Сценарий: список заказчика, который выскакивает по кнопке "выбрать заказчика".
?

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

Поменять на более ленивый вариант возможность есть? Тогда первые строки можно будет отдать быстро, а остальные подгрузить по скроллу. Как раз пока клиент пялится в экран - сервер приложений дофетчит уже.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006668
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу столько комментариев! Спасибо.

Попробую ответить на все.

Leonid Kudryavtsev> А где тут "Архитектура традиционная 3-звенная" ?
(Оракл) --- (Апп сервер) ---- (Клиент)
Апп сервер обслуживает все сотни клиентов, разговаривает с ораклом через 10-20 сессий.
Я понимаю, такая архитектура называется 3-звенкой, хотя термин чаще используется для вэбсайтов. Верно?

graycode> А при чем тут Оракл?
Я описываю задачу в целом для полноты контекста, и чтобы было интересно.
Вопросы оптимизации клиента довольно простые, на мой первый взгляд.
У меня будут вопросы по оптимизации, которые затронут Оракл, с которыми мне возможно помогут местные эксперты.

env> Какой сакральный смысл в передаче десятков тысяч строк на клиента?
Это очень правильный вопрос, один из тех что я собираюсь задать. Ответ на этот вопрос может значительно повлиять на объем работ и результат. Леонид частично на него ответил. Обычно "всех" хотят видеть руководители, а они жалуются громче рядовых сотрудников.

Leonid Kudryavtsev> Т.к. фильтров может быть бесконечно много,
Фильтр ограниченной сложности. Когда я написал "при всех возможных значениях фильтрА", я имел в виду самое неблагоприятную для скорости комбинацию значений. На данный момент это пустой фильтр.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006670
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте на время отложим комментарии "дело труба, беги оттуда".
Я очень уважаю моих сотрудников и учредителей, и эта задача мне интересна.

На данный момент я собрал прототип который показывает полный список за 1.5-2 секунды.
Это лучшее что мне удалось сделать без внесения изменений в архитектуру. Через пару минут расскажу что уже сделал.

Дальше будет труднее, и наверное интереснее как вам, так и мне.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLАрхитектура традиционная 3-звенная: Win32 клиент на стареньком Дельфи - Вин32 сервер на нем же

И то и другое вероятнее всего сляпано мышкой из готовых компонент. Для достижения
поставленной цели придётся переписать чуть менее чем полностью. В морг.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLя имел в виду самое неблагоприятную для скорости комбинацию значений. На данный момент это
пустой фильтр.

Как раз пустой фильтр для стандартных дельфийских компонент практически идеальный случай.
Если даже его вы сумели вытянуть только на секунду... См сообщение выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006674
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
результат запроса отдается серверу одним куском, а потом тот отдает его клиенту)

Поменять на более ленивый вариант возможность есть? Тогда первые строки можно будет отдать быстро, а остальные подгрузить по скроллу. Как раз пока клиент пялится в экран - сервер приложений дофетчит уже.


Это один из вариантов.

Я вчера в первый раз ковырялся в DB контролях Дельфи (они какие-то кастом).
Я заметил что ленивый фетч присутствует в настройках, но не используется нигде в приложении.
Есть ньюанс, что поиск по Ctrl-F (вместо настройки фильтра) это самый ходовая команда у пользователей, ее нужно сохранить.
Также, при ленивой подкачке возникнет дополнительная работа по обработке сортировок по колонкам с сохранением позиции выбранной строки. Это задача чревата большим количеством тестирования. Поскольку тестера мы не предусмотрели, я пока откладываю варианты связанные с повышенной тестовой нагрузкой.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006675
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

НеофитSQLя имел в виду самое неблагоприятную для скорости комбинацию значений. На данный момент это
пустой фильтр.

Как раз пустой фильтр для стандартных дельфийских компонент практически идеальный случай.
Если даже его вы сумели вытянуть только на секунду... См сообщение выше.


Мы оба говорим про сервер-сайд фильтр, который передается на сервер, и уменьшает количество строк, так?

Пустой фильтр сегодня дает максимальное количество строк, а задержка в исполнении операции показа заказчиков растет с числом строк. На этом основании я заключил что пустой фильтр на сегодня самый медленный. (ну и прямых измерений, конечно)
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006683
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLМы оба говорим про сервер-сайд фильтр, который передается на сервер, и уменьшает
количество строк, так?

Да.

НеофитSQLПустой фильтр сегодня дает максимальное количество строк, а задержка в исполнении операции
показа заказчиков растет с числом строк.

Это бред левых компонент. Стандартные фетчат ровно столько записей, сколько отображается
на экране. Для стратегии first row fast с навигацией по индексу это идеальный случай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006684
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я напрототипил, и какие нашел грабли:

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

Конфигурация списка
По умолчанию выводится 6 колонок, разрешается добавить еще 70, самых эзотерических)
Резалт сет всегда содержит все колонки, многие из которых вычисляемые.

Изолированность изменений
Это был первый большой сюрприз. Оказалось, поп-ап список заказчиков (как адресная книга в аутлуке) использует не только запрос, но и всю дельфи инфраструктуру от большого экрана просмотра/добавления/изменения заказчиков. Я не разобрался все, что она тянет, но там немало. Имя SQL запроса - атрибут типа, поэтому если я хочу менять запрос под свои цели, надо отделять поп-ап выбора заказчика от кода "большого экрана" который позволяет редактирование и подробный анализ.

Испытал пару подходов.
1) склонировал экран редактирования заказчиков, начал выбрасывать все ненужное. Походу рассмотрел архитектуру клиента, довольно умный хлопец его писал. В (теперь отдельном) запросе удалил опциональные колонки. Получил примерно 3 секунды.

2) собрал "с нуля" минимальную форму базового класса с базовыми виджетами позволяющий показать список, но еще отвечающий параметрам архитектуры клиента, чтоб его можно было обозначить как "попап". С тем же запросом получил 1.5-2 секунды. Это около 10К строк в секунду без "ручного кода" в клиенте - только виджеты на форме. Ctrl-F работает.

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

Это бред левых компонент. Стандартные фетчат ровно столько записей, сколько отображается
на экране. Для стратегии first row fast с навигацией по индексу это идеальный случай.


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

У меня есть требование сохранить поиск по Ctrl-F (это наверное можно извернуться, передав в фильтр и ре-фетч, сообщив серверу критерий поиска, номер выбраной строки и критерий сортировки),

и мне не совсем понятно как будет работать сортировка по колонкам с сохранением текущей строки, я предполагаю компоненты все это сами умеют делать, если им известен PK?
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006689
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Замер 1: исключить сеть как фактор.
...
Вывод 1 : сеть не является фактором, т.к. в один мегабайт помещается 20 тыс строчек, а мегабайт по гигабитам летает быстро.
Феерическая бредятина, полностью игнорирующая задержки. В том числе - задержки (прикладного) протокола.
А ещё есть пропускная способность, измеряемая пакетами в секунду. И которая не зависит от размера пакета.
...
Рейтинг: 0 / 0
Оптимизация интерактивного 3-звенника
    #40006692
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Оптимизация интерактивного 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
40 сообщений из 40, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация интерактивного 3-звенника
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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