powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация создания хешей для товаров.
12 сообщений из 12, страница 1 из 1
Оптимизация создания хешей для товаров.
    #39442857
soulilya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Досталась одна БД на интернет магазине. Структуру менять не хотят, так как это затронет биллинг.
Механизм в общем то простой. Есть товар с опциями и хеш к этим опциям. Хеш представляет собой все возможные комбинации опций. Чем больше опций, тем больше хешей. Получается есть таблицы с:
ИД товаров, ИД опции, ИД хеш.

ИД товара
1111
опции
1111;2222
1111;3333;
1111;4444
1111;5555
хеш
1111; 2222
1111; 2222.3333
1111; 2222.3333.4444
1111; 2222.3333.4444.5555

Получается, чтобы завести новую опцию надо распарсить строку хешей по точке, вставить новый ИД опции и отсортировать по возрастанию, затем записать в таблицу. Парсинг делается через регулярки в цикле SELECT, зетем собираю обратно в строку xmlagg (10g oracle).
Для некоторых категорий товаров, где много опций это занимает около 30 минут - час.

Вопрос: Если сделать это через хранимую процедуру JAVA и использовать в ее в селекте для каждого хеша как функцию PL/sql я выйграю в производительности?
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39442964
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архитектура попахивает говном, то, что ты называешь хешом, хешом можно назвать с большой натяжкой, а чтобы распарсить строку с разделителями, не обязательно пользоваться регулярусами.
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443005
Фотография Vladimir Filin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
soulilya....
1.Парсинг делается через регулярки в цикле SELECT, зетем собираю обратно в строку xmlagg (10g oracle).
...
2.Вопрос: Если сделать это через хранимую процедуру JAVA и использовать в ее в селекте для каждого хеша как функцию PL/sql я выйграю в производительности?
1. В цикле выполняются select-ы или в плане select что-то выполняется в цикле? Это две большие разнецы.
Если в цикле select-ы, то выгоднее избавиться от переключений sql и pl/sql engine (в цикле). Если только SQLем не решить задачу, можно дописать/переписать хранимую процедуру pl/sql, так что бы появился bulk: получил в pl/sql все необходимые данные от sql один раз; обработал их в pl/sql + подготовил (массивы) к выгрузке в sql; сделал bulk выгрузки в sql (forall)
docs.oracle.com/cd/E11882_01/appdev.112/e25519/overview.htm#LNPLS00104
Так оно быстрее.

2. Тов. Кайт по поводу производительности высказывался примерно так:
- сделай на sql
- не можешь, сделай на pl/sql
-не можешь, сделай на java
(не дословно, ссылку не дам)
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443006
Фотография Vladimir Filin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
soulilyaПолучается, чтобы завести новую опцию надо распарсить строку хешей по точке, вставить новый ИД опции и отсортировать по возрастанию,...
Странно: зачем каждый раз распарсивать строку, в которой каждая часть (как бы хеш) заранее была известна. Список-то опций где-то в базе есть? Если нет, сделай новую таблицу или матвью, где сохрани опции и их хеши и не занимайся прогревом cpu каждый раз. Опции-то, поди, не каждый час добавляют :)
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443070
soulilya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Странно: зачем каждый раз распарсивать строку, в которой каждая часть (как бы хеш) заранее была известна.

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

select это имеется ввиду - курсор, для каждой строки выполняется преобразование строки хеша.

Архитектура не моя, мне на оптимизацию эта хрень досталась.
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443077
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
soulilyaАрхитектура не моя, мне на оптимизацию эта хрень досталась.

Тогда оптимизируй от постановки задачи и цели использования, а не от "вычищаю конюшню круглой лопатой, как сделать её квадратной?"


soulilyaСтруктуру менять не хотят, так как это затронет биллинг.

Значит на уровне интерфейса взаимодействия с биллингом придётся на лету собирать привычную ему херню.
И, если надо, разбирать обратно там же.
А хранить уже в любой удобной для обработки структуре. От реляционной и до UDT/XML.
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443094
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то у меня есть подозрения, что по этому "хешу" потом LIKE'ами ищут.

Но зачем распарсивать строчку, когда ее можно просто всю собрать заново - мне тоже не понятно.
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443174
dbwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если новый "ИД опции" будет больше, чем предыдущие, то искать посерёдке не надо, можно дописывать в конец
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443196
soulilya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Но зачем распарсивать строчку, когда ее можно просто всю собрать заново - мне тоже не понятно.
Это дольше, я проверял.

---Как-то у меня есть подозрения, что по этому "хешу" потом LIKE'ами ищут.

Так оно и есть.

---Значит на уровне интерфейса взаимодействия с биллингом придётся на лету собирать привычную ему херню.

Увеличивает время работы билинга свыше допустимого, пробобовал.

--если новый "ИД опции" будет больше, чем предыдущие, то искать посерёдке не надо, можно дописывать в конец

Перед этим тебе надо сравнить значения в строке.
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443208
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
soulilyaУвеличивает время работы билинга свыше допустимого, пробобовал.

показывай, как пробовал
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443242
dbwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На каком этапе наибольшие затраты времени? - что хотите оптимизировать? Одним ударом всё ?
найти строки с нужным товаром
распарсить строку хешей по точке
вставить новый ИД опции
отсортировать по возрастанию
собираю обратно в строку xmlagg
и т.п.

Для начала замерьте с помощью DBMS_UTILITY.GET_TIME,
ещё лучше запустите с трассировкой dbms_monitor.SESSION_TRACE_ENABLE
...
Рейтинг: 0 / 0
Оптимизация создания хешей для товаров.
    #39443437
soulilya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
---показывай, как пробовал

Сначала надо найти все опции к товару, потом их выбрать и развернуть в строку, отсортировав по возрастанию.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация создания хешей для товаров.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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