powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисления PL/SQL vs С
25 сообщений из 32, страница 1 из 2
Вычисления PL/SQL vs С
    #39940438
Mantrid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

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

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

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

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

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

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

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

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

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

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

IMHO & AFAIK

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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