Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисления PL/SQL vs С / 25 сообщений из 32, страница 1 из 2
24.03.2020, 09:04
    #39940438
Mantrid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Здравствуйте.

Есть БД с таблицами на несколько миллионов записей. На этой БД есть процедуры на PL/SQL, которые несколько часов проводят какие-то вычисления с таблицами. Чаще всего в подобных процедурах стоит вложенный for по курсорам.
Вопрос: есть ли смысл реализации подобных процедур на стороне клиента на Си-подобном языке?
Буду рад выслушать разумные доводы за и против, дабы остудить пыл некоторых горячих голов.
PS: Предложения побить разработчиков не принимаются, т.к. это ничего не даст.
...
Рейтинг: 0 / 0
24.03.2020, 09:10
    #39940440
Zmeelov2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid , на мой взгляд - не имеет.
Причины:
1. Добавляются расходы на доставку данных на клиента.
2. Сервер (если это действительно сервер) априорно выделяет на задачу большие мощности, чем может быть выделено на самой навороченной рабочей станции.

Несколько миллионов записей - объем не очень большой, скорее малый. Копать в сторону оптимизации серверных процедур, избавления по возможности от курсоров, предварительной подготовки данных. Индексы, планы запросов, пересбор статистики, хинты - в порядке возрастания. И найдите толкового ДБА.
...
Рейтинг: 0 / 0
24.03.2020, 09:14
    #39940441
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Zmeelov2,
1 - Вопрос в том, насколько они значительны.
2 - n рабочих станций.

В общем надо бенчить.
...
Рейтинг: 0 / 0
24.03.2020, 09:16
    #39940442
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Zmeelov2
Копать в сторону оптимизации серверных процедур

Вангую, что там всё будет работать на или одном ядре или бешено переключать контекст.
...
Рейтинг: 0 / 0
24.03.2020, 09:24
    #39940446
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid
на Си-подобном языке?
Достали нот, баса, альта, две скрипки...
Mantrid
на стороне клиента
А вы, друзья, как не садитесь...
В плане производительности зависит от... В плане стоимости тоже.
...
Рейтинг: 0 / 0
24.03.2020, 09:28
    #39940447
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid
Вопрос: есть ли смысл реализации подобных процедур на стороне клиента на Си-подобном языке?
Если это является заметной нагрузкой на CPU сервера БД, которая вытесняет другую полезную нагрузку, то возможно да.
Тупое правило: работает и всех более менее устраивает - не лезь ломать, не понимаючи.
...
Рейтинг: 0 / 0
24.03.2020, 11:00
    #39940469
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Для начала есть смысл попробовать Native компиляцию если затык именно в вычислениях
...
Рейтинг: 0 / 0
24.03.2020, 11:17
    #39940477
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Как выглядит этот вложенный for? Сколько уровней?

Хотелось цифры узнать по количеству итераций.

Как распределено время? Эти несколько часов.
...
Рейтинг: 0 / 0
24.03.2020, 11:25
    #39940481
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Если там не идет кодирования Bitmap в JPEG на PL/SQL - 90% что станет только хуже

Любой обмен по сети, это на несколько порядков более трудоемкая задача, чем какие-то расчеты. В Oracle (+например Allround Automation PL/SQL Developer) есть профайлер, стоит сначала запустить на нем и посмотреть, какие конкретно строки кода "стоят". С большой вероятностью, затык всего лишь на нескольких конструкциях/функциях и вполне вероятно, что совершенно не "вычисления"

IMHO & AFAIK
...
Рейтинг: 0 / 0
24.03.2020, 11:25
    #39940482
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid
Чаще всего в подобных процедурах стоит вложенный for по курсорам.
Row by row, slow by slow... (c) Tom Kyte
...
Рейтинг: 0 / 0
24.03.2020, 11:51
    #39940489
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Для БД вложенные циклы вобщем-то не нужны. Они заменяются на декартовы соединения.

Но если для данной задачи основная нагрузка идет не на fetch строк на именно на вычислния
тогда имеет смысл адаптировать задачу под C-native code. Но сначала попробовать native опцию
для PL машины как предложили выше.
...
Рейтинг: 0 / 0
24.03.2020, 12:23
    #39940501
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
На самом деле, для ряда задач, PL/SQL сильно НЕдоязык. Нет нормальных структур данных. Списки, деревья, HashMap'ы, указатели (на худой конец).

Делать серьезные расчетные алгоритмы на одних массивах и "Basic"'е - то еще удовольствие. (поиск по графам, обработка ГЕОданных, парсинг RTF и так далее).

IMHO & AFAIK

Но если код есть и работает, но медленно - то первым делом запускать профайлер. А потом уже думать, имеет ли смысл переводить на что-то еще и/или выносить на клиента.
...
Рейтинг: 0 / 0
24.03.2020, 12:24
    #39940502
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Leonid Kudryavtsev,

во времена семерки, был на курсах в Москве (фирма INT),
так те хвалились что проводят расчеты крыла самолета
утром выгружали данные из оракля,
днем общитывали условно на "C",
результаты загружали в базу,
ночью что-то там "интегрировали/обобщали" средствами оракля,
с утра ...

.....
stax
...
Рейтинг: 0 / 0
24.03.2020, 12:25
    #39940503
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Да я плюс.
...
Рейтинг: 0 / 0
24.03.2020, 12:42
    #39940512
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Leonid Kudryavtsev
на одних массивах
В pl/sql нет массивов.
Leonid Kudryavtsev
Списки, деревья, HashMap'ы
Это в pl/sql называют коллекциями.
Leonid Kudryavtsev
указатели (на худой конец).
Наличие в языке явно выраженных "указателей" есть следствие ограниченности ранних компиляторов.
...
Рейтинг: 0 / 0
24.03.2020, 12:52
    #39940516
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Задачи, в которых я бы в гробу видел PL/SQL (и с которыми реально сталкивался в Oracle)
1. Парсинг RTF.
2. Обработка геоданных. Банальная операция преобразования координат из WSG-84 в Гугле Сферикал Меркатор и обратно, на free либах в Java практически мгновенно (минуты), в Oracle часы, а то и сутки (слои карты Санкт-Петербурга)
3. Электронная подпись XML
4. Кодировка/декодировка JPEG
и так далее

Нет, любители могут и на SELECT'ах, PL/SQL'ах реализовать, а я - пасс.
...
Рейтинг: 0 / 0
24.03.2020, 12:53
    #39940518
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
В идеале задачу надо свести к коллекциям примитивов. И если памяти UGA хватит для объема задачи - то
наполнить эти массивы из курсоров нужными данными. И решить задачу циклами. Есссно с волшебным
ключиком =NATIVE.

Короче - следовать лучшим традициям column-oriented систем.
...
Рейтинг: 0 / 0
24.03.2020, 14:47
    #39940578
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Leonid Kudryavtsev
указатели (на худой конец).
Это признак плохого языка.
...
Рейтинг: 0 / 0
24.03.2020, 14:52
    #39940581
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Leonid Kudryavtsev

4. Кодировка/декодировка JPEG
и так далее

Это вообще лютый треш.
...
Рейтинг: 0 / 0
24.03.2020, 14:54
    #39940582
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
mayton
Это вообще лютый треш.

Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах )))
зачем это было нужно автору, я не знаю.
...
Рейтинг: 0 / 0
24.03.2020, 14:57
    #39940584
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
И как пример реальности даже такого треша, на текущем месте работы очень сильно хотели картинку с QR-кодом на Pl/SQL делать. Но не разобрались/не получилось. В результате вынесли на Web-Server (PHP) и дергают из PL/SQL через UTL_HTTP.
...
Рейтинг: 0 / 0
24.03.2020, 14:57
    #39940585
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Leonid Kudryavtsev
mayton
Это вообще лютый треш.

Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах )))
зачем это было нужно автору, я не знаю.

1) Мозговые пятничные брейн-факи
2) Задача заданная на собеседовании.

Нет никакого промышленного смысла юзать преобразования Фурье на селектах. Тем более там - двумерное.
...
Рейтинг: 0 / 0
24.03.2020, 22:47
    #39940803
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
mayton
Leonid Kudryavtsev
пропущено...

Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах )))
зачем это было нужно автору, я не знаю.

1) Мозговые пятничные брейн-факи
2) Задача заданная на собеседовании.

Нет никакого промышленного смысла юзать преобразования Фурье на селектах. Тем более там - двумерное.
При задании сей задачи на собеседовании это является явным маркером, что собеседующий не в адеквате.
Тот случай когда сойдутся во мнении и те, кто без тудностей могут натянуть модель и те, кто вообще без понятия с какой стороны подойти к решению.
...
Рейтинг: 0 / 0
24.03.2020, 22:53
    #39940805
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid
вложенный for по курсорам
Ну и куда здесь лепить С?
Mantrid
дабы остудить пыл некоторых горячих голов
Остужают пыл лучше всего цифры.
Пусть либо продемонстируют выигрыш либо остудятся сами.

Для ознакомления
PL/SQL vs JAVA vs C

В теме по ссылке анализируются два класса задач
1) сложный алгоритм с атомарными типами на входе и выходе
2) single row function

Это НЕ имеет никакого отношения к попыткам вынесения cursor for loop из PL/SQL.
...
Рейтинг: 0 / 0
25.03.2020, 00:41
    #39940816
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления PL/SQL vs С
Mantrid,
разберитесь сначала что конкретно тормозит - посмотрите AWR-ASH отчёты, снимите 10046 с проблемных сессий, проанализируйте события которые занимают время чтобы была конкретика, а не " какие-то вычисления с таблицами". Возможно проблема не в вычислениях а в запросах, которые вполне вероятно, что можно оптимизировать.
БД с таблицами на несколько миллионов записей - это не показатель большого объема. Оракл прекрасно и с большими объемами работает
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисления PL/SQL vs С / 25 сообщений из 32, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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