|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть БД с таблицами на несколько миллионов записей. На этой БД есть процедуры на PL/SQL, которые несколько часов проводят какие-то вычисления с таблицами. Чаще всего в подобных процедурах стоит вложенный for по курсорам. Вопрос: есть ли смысл реализации подобных процедур на стороне клиента на Си-подобном языке? Буду рад выслушать разумные доводы за и против, дабы остудить пыл некоторых горячих голов. PS: Предложения побить разработчиков не принимаются, т.к. это ничего не даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:04 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid , на мой взгляд - не имеет. Причины: 1. Добавляются расходы на доставку данных на клиента. 2. Сервер (если это действительно сервер) априорно выделяет на задачу большие мощности, чем может быть выделено на самой навороченной рабочей станции. Несколько миллионов записей - объем не очень большой, скорее малый. Копать в сторону оптимизации серверных процедур, избавления по возможности от курсоров, предварительной подготовки данных. Индексы, планы запросов, пересбор статистики, хинты - в порядке возрастания. И найдите толкового ДБА. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:10 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Zmeelov2, 1 - Вопрос в том, насколько они значительны. 2 - n рабочих станций. В общем надо бенчить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:14 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Zmeelov2 Копать в сторону оптимизации серверных процедур Вангую, что там всё будет работать на или одном ядре или бешено переключать контекст. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:16 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid на Си-подобном языке? Mantrid на стороне клиента В плане производительности зависит от... В плане стоимости тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:24 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid Вопрос: есть ли смысл реализации подобных процедур на стороне клиента на Си-подобном языке? Тупое правило: работает и всех более менее устраивает - не лезь ломать, не понимаючи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 09:28 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Для начала есть смысл попробовать Native компиляцию если затык именно в вычислениях ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:00 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Как выглядит этот вложенный for? Сколько уровней? Хотелось цифры узнать по количеству итераций. Как распределено время? Эти несколько часов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:17 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Если там не идет кодирования Bitmap в JPEG на PL/SQL - 90% что станет только хуже Любой обмен по сети, это на несколько порядков более трудоемкая задача, чем какие-то расчеты. В Oracle (+например Allround Automation PL/SQL Developer) есть профайлер, стоит сначала запустить на нем и посмотреть, какие конкретно строки кода "стоят". С большой вероятностью, затык всего лишь на нескольких конструкциях/функциях и вполне вероятно, что совершенно не "вычисления" IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:25 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid Чаще всего в подобных процедурах стоит вложенный for по курсорам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:25 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Для БД вложенные циклы вобщем-то не нужны. Они заменяются на декартовы соединения. Но если для данной задачи основная нагрузка идет не на fetch строк на именно на вычислния тогда имеет смысл адаптировать задачу под C-native code. Но сначала попробовать native опцию для PL машины как предложили выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:51 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
На самом деле, для ряда задач, PL/SQL сильно НЕдоязык. Нет нормальных структур данных. Списки, деревья, HashMap'ы, указатели (на худой конец). Делать серьезные расчетные алгоритмы на одних массивах и "Basic"'е - то еще удовольствие. (поиск по графам, обработка ГЕОданных, парсинг RTF и так далее). IMHO & AFAIK Но если код есть и работает, но медленно - то первым делом запускать профайлер. А потом уже думать, имеет ли смысл переводить на что-то еще и/или выносить на клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 12:23 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, во времена семерки, был на курсах в Москве (фирма INT), так те хвалились что проводят расчеты крыла самолета утром выгружали данные из оракля, днем общитывали условно на "C", результаты загружали в базу, ночью что-то там "интегрировали/обобщали" средствами оракля, с утра ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 12:24 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev на одних массивах Leonid Kudryavtsev Списки, деревья, HashMap'ы Leonid Kudryavtsev указатели (на худой конец). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 12:42 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Задачи, в которых я бы в гробу видел PL/SQL (и с которыми реально сталкивался в Oracle) 1. Парсинг RTF. 2. Обработка геоданных. Банальная операция преобразования координат из WSG-84 в Гугле Сферикал Меркатор и обратно, на free либах в Java практически мгновенно (минуты), в Oracle часы, а то и сутки (слои карты Санкт-Петербурга) 3. Электронная подпись XML 4. Кодировка/декодировка JPEG и так далее Нет, любители могут и на SELECT'ах, PL/SQL'ах реализовать, а я - пасс. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 12:52 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
В идеале задачу надо свести к коллекциям примитивов. И если памяти UGA хватит для объема задачи - то наполнить эти массивы из курсоров нужными данными. И решить задачу циклами. Есссно с волшебным ключиком =NATIVE. Короче - следовать лучшим традициям column-oriented систем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 12:53 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev указатели (на худой конец). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:47 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 4. Кодировка/декодировка JPEG и так далее Это вообще лютый треш. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:52 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
mayton Это вообще лютый треш. Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах ))) зачем это было нужно автору, я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:54 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
И как пример реальности даже такого треша, на текущем месте работы очень сильно хотели картинку с QR-кодом на Pl/SQL делать. Но не разобрались/не получилось. В результате вынесли на Web-Server (PHP) и дергают из PL/SQL через UTL_HTTP. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:57 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Это вообще лютый треш. Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах ))) зачем это было нужно автору, я не знаю. 1) Мозговые пятничные брейн-факи 2) Задача заданная на собеседовании. Нет никакого промышленного смысла юзать преобразования Фурье на селектах. Тем более там - двумерное. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:57 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
mayton Leonid Kudryavtsev пропущено... Ну тут пару дней назад был топик, про вычисление преобразования Фурье на SELECT'ах ))) зачем это было нужно автору, я не знаю. 1) Мозговые пятничные брейн-факи 2) Задача заданная на собеседовании. Нет никакого промышленного смысла юзать преобразования Фурье на селектах. Тем более там - двумерное. Тот случай когда сойдутся во мнении и те, кто без тудностей могут натянуть модель и те, кто вообще без понятия с какой стороны подойти к решению. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 22:47 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid вложенный for по курсорам Mantrid дабы остудить пыл некоторых горячих голов Пусть либо продемонстируют выигрыш либо остудятся сами. Для ознакомления PL/SQL vs JAVA vs C В теме по ссылке анализируются два класса задач 1) сложный алгоритм с атомарными типами на входе и выходе 2) single row function Это НЕ имеет никакого отношения к попыткам вынесения cursor for loop из PL/SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 22:53 |
|
Вычисления PL/SQL vs С
|
|||
---|---|---|---|
#18+
Mantrid, разберитесь сначала что конкретно тормозит - посмотрите AWR-ASH отчёты, снимите 10046 с проблемных сессий, проанализируйте события которые занимают время чтобы была конкретика, а не " какие-то вычисления с таблицами". Возможно проблема не в вычислениях а в запросах, которые вполне вероятно, что можно оптимизировать. БД с таблицами на несколько миллионов записей - это не показатель большого объема. Оракл прекрасно и с большими объемами работает ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 00:41 |
|
|
start [/forum/topic.php?fid=52&fpage=50&tid=1881420]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 432ms |
0 / 0 |