|
|
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Отцы приветствую. Есть следующая проблема: скрипт считает среднее значение использования карт в течении определенной даты(фильтр). С какого то момента подсчет за месяц стал занимать очень много времени. Раньше час-два. Теперь сутки\полтора. Опытным путем установил, что за день считаем 5 секунд, за 5 дней 10 минут. За 15 дней 11 часов и тд...Я вот думаю может есть какая то проблема с пространством TEMP или ему надо добавить еще один REDO файлик. Можете что то посоветовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:39 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, А есть все необходимые индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:41 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, а мне думается что у вас там slow-by-slow построчная обработка в многократно вложенных друг в друга циклах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:46 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, То есть сначала предполагает угадать код, а потом куда уходит время. Ждем телепатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:56 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
londinium, С индексами все в порядке. Конечно попробую перестроить, но не думаю что причина в этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:02 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Код чего? Запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:03 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Скрипт простой: with mainselect as( select t_data.*, division.code as dcode, operator.code as ocode from t_data join division on (division.id = t_data.id_division) join operator on (operator.id = division.id_operator) where t_data.kind in (16,17,34) and nvl(t_data.card_series, t_data.new_card_series) in (11,20,21,30,36,40,50,60) and t_data.date_of between TO_DATE('01.10.2016 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and TO_DATE('01.11.2016 00:00:00', 'dd.mm.yyyy hh24:mi:ss') order by nvl(t_data.card_series, t_data.new_card_series), t_data.card_num ) select nvl(ms.card_series, ms.new_card_series) as "серии", ms.card_num "Номер карты", COUNT(ms.id) "Среднее", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0001 and ms.card_num = mainselect.card_num) as "0001", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0101 and ms.card_num = mainselect.card_num) as "0101", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0102 and ms.card_num = mainselect.card_num) as "0102", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0103 and ms.card_num = mainselect.card_num) as "0103" from mainSelect ms group by nvl(ms.card_series, ms.new_card_series), ms.card_num order by nvl(ms.card_series, ms.new_card_series), ms.card_num ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:09 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, 1) Условия из where перекинь в join: Код: plsql 1. 2. 3. 4. 2) Order из with убирай. 3) (SELECT COUNT(mainselect.id) from mainselect where dcode = 0001 and ms.card_num = mainselect.card_num) as "0001", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0101 and ms.card_num = mainselect.card_num) as "0101", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0102 and ms.card_num = mainselect.card_num) as "0102", (SELECT COUNT(mainselect.id) from mainselect where dcode = 0103 and ms.card_num = mainselect.card_num) as "0103" заменяем на Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:27 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
DshedooУсловия из where перекинь в joinПросвети теперь как это отразиться на плане. PS. Переписывание коррелированных скаляров в case - совет по делу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:36 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Возможно переписывание скрипта даст некоторый прирост производительности, но у меня все ощущение, что где то ему не хватает пространства....так не думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:42 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, посмотреть типы t_data.kind, t_data.card_series, t_data.new_card_series если они не number перевести in в строки (('16','17','34')) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:42 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSolу меня все ощущениеЧто-то вас много повылазило на форум в последнее время с ощущениями. Использовать мозг и куда уходит время становится все менее популярным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:45 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, number ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:47 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, operator.code as ocode в дальнейшем не используется, может не надо добавлять таблицу Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:48 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, Я бы вообще переписал это чудо без with mainselect as( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 13:55 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, 1) В with'е сразу определи nvl(ms.card_series, ms.new_card_series), причём лучше через case. 2) В with'e условие Код: plsql 1. замени на Код: plsql 1. 3) COUNT(ms.id) замени на sum(1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:00 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Dshedoo, в написании запросов я не очень, больше админю оракл пойду к разрабам тогда. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:08 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSolDshedoo, в написании запросов я не очень, больше админю оракл пойду к разрабам тогда. Спасибо.Админу неплохо было бы взять SQL Monitoring скрипта и глянуть на что время уходит. Я бы сильно подозревал, что резкий рост времени обусловлен вылезанием в Temp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:10 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, Мое чутье говорит о том же. Да и TEMP у меня уже на краю. Просто не хочется сразу стопать БД и удалять его, создав новый. Хоть это и не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:14 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSolПросто не хочется сразу стопать БД и удалять его, создав новый. а что это даст и зачем стопать БД??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:19 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Q.Tarantino, Мне казалось из mount или nomount необходимо делать. Хотя возможно переключить и так можно. Обычно стопал во избежание проблем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:25 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, Ну и сделаю его побольше. Со стандартным развером в 30 гигов точно испытывал проблемы но при индексации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:26 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSolAntSol, Ну и сделаю его побольше. Со стандартным развером в 30 гигов точно испытывал проблемы но при индексацииЕще раз. Админу неплохо было бы взять SQL Monitoring скрипта и глянуть на что время уходит. Я бы сильно подозревал, что резкий рост времени обусловлен вылезанием в Temp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:28 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, Окей, попробую. Ни разу не использовал данный инструмент, так как кроме простейших запросов ничего не пишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:31 |
|
||
|
Экспоненциальный рост времени выполнения отчета
|
|||
|---|---|---|---|
|
#18+
AntSol, Alexander Ryndin... Я бы сильно подозревал, что резкий рост времени обусловлен вылезанием в Temp Если вылезание в TEMP имеет место быть и не уйдёт после оптимизации , несколько доков для подумать/попробовать: tablespace_group_clause for temporary tablespaces Temporary tablespace group tips Storage Management for OLAP (не совсем в тему, но почитать стоит) Oracle 11R2A tablespace group lets you assign multiple temporary tablespaces to a single user and increases the addressability of temporary tablespaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:40 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39453830&tid=1885935]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 537ms |

| 0 / 0 |
