Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
Имеются 2 примерно одинаковые по объему базы oracle 11xe 64bit
есть пакет который выдает таблицу
select * from table(pk_salary.salary_view) order by 1
на одной базе выполняется за 1,23с на другой 135,3с куда копать не понятно планы выглядят одинаково

Description Object owner Object name Cost Cardinality Bytes
SELECT STATEMENT, GOAL = CHOOSE
SORT ORDER BY
COLLECTION ITERATOR PICKLER FETCH PK_SALARY SALARY_VIEW

покажите в каком направлении копать

накатывали этот запрос примерно на 200 баз в сети
где в 15 базах обнаружены тормоза
никакой закономерности обнаружить не удалось
9 апр 19, 18:24    [21857628]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
Всем добрый день!!
забыл написать :)
9 апр 19, 18:25    [21857630]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7697
IMHO PL SQL Developer - Profiller
9 апр 19, 18:29    [21857634]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29041
ilyuha111
в каком направлении копать
Это невообразимо сложно понять, что в
ilyuha111
пакет который выдает таблицу
9 апр 19, 19:05    [21857667]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
сделал но понятней от этого не стало

-- Created on 09.04.2019 by ANT
declare
-- Local variables here
i integer;
begin
-- Test statements here

for c in (select * from table(pk_salary.salary_view(v_salary_head_id => :v_salary_head_id,
v_product_id => :v_product_id))
) loop
null;
end loop;


end;
сделал вот такой скрипт

PK_SALARY 631 134 548 9264 for cc in (select sr.salary_rule_id , -- база с тормозами

PK_SALARY 631 257 7002 for cc in (select sr.salary_rule_id , -- база без тормозов
9 апр 19, 19:31    [21857689]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
В пакетах ничего интересного нет
вот тексет
type salary_rec is record(
product_id t_product.product_id%type,
sum_w_nds number,
zp_fond number,
zp_kass number,
zp_zav number
);
type salary_tab is table of salary_rec;

function salary_view(
v_salary_head_id t_salary_head.salary_head_id%type default null,
v_product_id t_product.product_id%type default null
)
return salary_tab pipelined
as
TYPE cur_typ IS REF CURSOR;
c cur_typ;

bc_roznica_rec type_roznica_rec;
bc1_roznica_rec roznica_rec ;

i number;
bc_salary_tab salary_tab;
bc_salary_rec salary_rec;
vl_sql varchar2(30000);
vl_name_search_stub varchar2(3000);
vl_name_search_condition varchar2(3000);
vl_salary_rule_priority number;
vl_salary_rule_type_id number;
vl_serial_value number;
vl_salary_summ number;
vl_salary_rule_paralel number;
vl_salary_rule_name t_salary_rule.salary_rule_name%type;
vl_salary_rule_type_name t_salary_rule_type.salary_rule_type_name%type;
vl_product_id varchar2(32000);
vl_partner_params_id varchar2(32000);
vl_partner_params_id1 varchar2(32000);
vl_bonus_zav number;
vl_partner number;
vl_base_zp_err number;



begin
vl_product_id :='';
if v_product_id is not null then
vl_product_id :='and i.product_id ='||v_product_id;
end if;
vl_partner := organiz.pk_system.GetMyPartnerID;

vl_sql :=
'select s.product_id,' || chr(10) ||
' 1 as outcome_count,' || chr(10) ||
' max(s.outcome_price_one_w_nds) as sum_w_nds,' || chr(10) ||
' max(s.outcome_price_one_w_nds - i.income_price_w_nds) as sum_nac ,' || chr(10) ||
' max(pb.bonus_zav) as bonus_zav' || chr(10) ||
' from' || chr(10) ||
' t_sklad_state s,' || chr(10) ||
' t_income i,' || chr(10) ||
' t_partner_link_buh pb,' || chr(10) ||
' t_owner p' || chr(10) ||
' where' || chr(10) ||
' i.income_id = s.income_id' || chr(10) ||
' and s.product_count_sale>0' || chr(10) ||
vl_product_id || chr(10) ||
--' and i.product_id = 5100001333' || chr(10) ||
' and pb.partner_id = p.partner_id' || chr(10) ||
' GROUP BY' || chr(10) ||
' s.product_id'|| chr(10) ||
'';


--dbms_output.put_line(vl_sql) ;

OPEN c FOR vl_sql;
LOOP
FETCH c INTO bc1_roznica_rec;
EXIT WHEN c%NOTFOUND;
i:=0;
vl_base_zp_err :=0;
for cc in (select sr.salary_rule_id ,
sr.salary_head_id ,
sr.salary_rule_name ,
srt.salary_rule_type_name,
sr.salary_rule_priority ,
sr.salary_rule_paralel ,
sr.salary_rule_type_id ,
srpro.product_value
from t_salary_rule sr,
t_salary_head sh,
t_salary_rule_type srt,
t_salary_rule_product srpro,
t_salary_rule_partner srp
where srt.salary_rule_type_id = sr.salary_rule_type_id
and sr.salary_head_id = sh.salary_head_id
and srt.salary_rule_type_id = sr.salary_rule_type_id
and srp.salary_rule_id = sr.salary_rule_id
and srpro.salary_rule_id = sr.salary_rule_id
and srpro.product_id =bc1_roznica_rec.product_id
and srp.is_del_flag = 0
and srpro.is_del_flag = 0
and sr.is_del_flag = 0
and sh.is_del_flag = 0
and sh.document_status_id= 290102
and trunc(sysdate) between sr.salary_head_date_start and coalesce(sr.salary_head_date_end,sh.salary_head_date_end)
and srp.partner_id =vl_partner
order by sr.salary_rule_priority
) loop

i:=1;

if cc.salary_rule_type_id = 1 then
vl_salary_summ:= bc1_roznica_rec.sum_w_nds*cc.product_value/100;
end if;

if cc.salary_rule_type_id = 2 then
vl_salary_summ:= bc1_roznica_rec.sum_nac*cc.product_value/100;
end if;

if cc.salary_rule_type_id = 3 then
vl_salary_summ:= bc1_roznica_rec.outcome_count*cc.product_value;
end if;

if cc.salary_rule_type_id =4 then
vl_salary_summ:= bc1_roznica_rec.outcome_count*cc.product_value;
end if;

if cc.salary_rule_paralel = 1 then
vl_bonus_zav := bc1_roznica_rec.bonus_zav;
else
vl_bonus_zav := 0;
end if;
bc_salary_rec.product_id := bc1_roznica_rec.product_id;
bc_salary_rec.sum_w_nds := bc1_roznica_rec.sum_w_nds;
bc_salary_rec.zp_fond := vl_salary_summ;
bc_salary_rec.zp_kass := vl_salary_summ*(1-vl_bonus_zav/100);
bc_salary_rec.zp_zav := vl_salary_summ*(vl_bonus_zav/100);
pipe row(bc_salary_rec);
exit;
end loop;

if i=0 then
begin
select sr.salary_rule_priority,
sr.salary_rule_type_id,
sr.serial_value ,
sr.salary_rule_paralel
into
vl_salary_rule_priority,
vl_salary_rule_type_id ,
vl_serial_value ,
vl_salary_rule_paralel
from t_salary_rule sr,
t_salary_head sh,
t_salary_rule_type srt,
t_salary_rule_partner srp
where srt.salary_rule_type_id = sr.salary_rule_type_id
and sr.salary_rule_priority = 100 -- базовая зп на все товары код 100
and sr.salary_head_id = sh.salary_head_id
and srt.salary_rule_type_id = sr.salary_rule_type_id
and srp.salary_rule_id = sr.salary_rule_id
and srp.is_del_flag = 0
and sr.is_del_flag = 0
and sh.is_del_flag = 0
and sh.document_status_id= 290102
and trunc(sysdate) between sr.salary_head_date_start and coalesce(sr.salary_head_date_end,sh.salary_head_date_end)
and srp.partner_id =vl_partner;
exception
when too_many_rows then
vl_base_zp_err :=2;
when no_data_found then
vl_base_zp_err :=1;
when others then raise;
end;


if vl_base_zp_err = 0 then
if vl_salary_rule_type_id = 1 then
vl_salary_summ:= bc1_roznica_rec.sum_w_nds* vl_serial_value /100;
end if;

if vl_salary_rule_type_id = 2 then
vl_salary_summ:= bc1_roznica_rec.sum_nac* vl_serial_value /100;
end if;

if vl_salary_rule_type_id = 3 then
vl_salary_summ:= vl_serial_value *bc1_roznica_rec.outcome_count;
end if;
if vl_salary_rule_type_id = 4 then
vl_salary_summ:= vl_serial_value *bc1_roznica_rec.outcome_count;
end if;

if vl_salary_rule_paralel = 1 then
vl_bonus_zav := bc1_roznica_rec.bonus_zav;
else
vl_bonus_zav := 0;
end if;
bc_salary_rec.product_id := bc1_roznica_rec.product_id;
bc_salary_rec.sum_w_nds := bc1_roznica_rec.sum_w_nds;
bc_salary_rec.zp_fond := vl_salary_summ;
bc_salary_rec.zp_kass := vl_salary_summ*(1-vl_bonus_zav/100);
bc_salary_rec.zp_zav := vl_salary_summ*(vl_bonus_zav/100);
pipe row(bc_salary_rec);
end if;
end if;
end loop;
CLOSE c;
return;
end;

не понятно почему в 90% баз работает нормально а в 10% тормозит
9 апр 19, 19:33    [21857691]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Fogel
Member

Откуда:
Сообщений: 361
ilyuha111
Имеются 2 примерно одинаковые по объему базы oracle 11xe 64bit
есть пакет который выдает таблицу
select * from table(pk_salary.salary_view) order by 1
на одной базе выполняется за 1,23с на другой 135,3с куда копать не понятно планы выглядят одинаково

Description Object owner Object name Cost Cardinality Bytes
SELECT STATEMENT, GOAL = CHOOSE
SORT ORDER BY
COLLECTION ITERATOR PICKLER FETCH PK_SALARY SALARY_VIEW

покажите в каком направлении копать

накатывали этот запрос примерно на 200 баз в сети
где в 15 базах обнаружены тормоза
никакой закономерности обнаружить не удалось


Ключевое слово здесь "примерно".
Сравнение наборов данных, сбора статистики - на первом месте копания.
9 апр 19, 22:38    [21857774]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29041
ilyuha111
вот тексет
Чудак, научись общаться в проф-форуме. Твой говно-текст никто даже смотреть не станет.
ilyuha111
не понятно почему в 90% баз работает нормально а в 10% тормозит
Потому что есть 10% людей, которые способны понять почему, а 90% даже пытаться объяснять бесполезно. Правило Парето.
10 апр 19, 07:51    [21857906]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
Переформулирую
есть базы oracle 11xe 64bit и oracle 11xe 32bit операционистки от Winxp 32 до win10 64 примерно 200 баз
возраст с 01,05,2018 по сегодня (устанавливалось в течении полугода ) размер данных от 200М до 1000М
по неясным причинам в 20 базах запрос - select * from table(pk_salary.salary_view) order by 1 отрабатывает очень медленно (100-300 сек), в 180 базах 0,1-2 сек
пытались найти закономерности
проверяли:
операционистки
разрядность оракла 32-64
настройки памяти
содержимое зависимых от запроса таблиц
сбор статистики
количество строк в результате запроса от 1000 до 9000 в разных базах, нет закономерности
упрощали переписывали функцию
закономерностей не нашли

пытались :
сбор статистики не помогает
пересоздание зависимых таблиц не помогает
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
переписать запрос на SQL (без функции) помогает на 100%, но не учитывает сложную логику
создание временной таблицы (вставка из функции) работает, но её нужно часть обновлять (delete insrt примерно 3-5 минут и в это время запросы подтормаживают)
поднимали разные базы на дохлых компах (ATOM 1G оперативы hdd5200 ) все рано работает быстро примерно 5-10 сек


возможно мы не там ищем, такие запросы применять стали недавно так как раньше особой необходимости в них не было
10 апр 19, 10:18    [21858015]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29041
ilyuha111
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
Надо было ещё форточки открыть/закрыть.
10 апр 19, 10:37    [21858037]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
-2-
Member

Откуда:
Сообщений: 14730
ilyuha111
пытались :
Статистически логично начать разбираться с большей группы, где по неясным причинам "0,1-2 сек".
10 апр 19, 10:41    [21858045]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
-2-,

не вижу смысла
когда велась разработка то не сразу все заработало
на тестовых стендах довели до нужного уровня и в работу
10 апр 19, 10:47    [21858054]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7697
ЕХИДСТВО_ОН

Запустить на проблемных базах в профайлере и посмотреть, где, что и почему тормозить не судьба? Переустанавливать Oracle и заменять компы проще?

ilyuha111
....когда велась разработка то не сразу все заработало
на тестовых стендах довели....

ilyuha111
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50

Интересно, сколько раз пришлось переустанавливать Oracle и заменять комп на тестовых базах, что бы "довести до нужного уровня" ?

Еще десять тысяч вёдер воды, синьор, — и золотой ключик у нас в кармане! ( C )

ЕХИДСТВО_ОФФ
10 апр 19, 14:46    [21858376]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
DВА
Member

Откуда:
Сообщений: 5385
ilyuha111
Переформулирую
есть базы oracle 11xe 64bit и oracle 11xe 32bit операционистки от Winxp 32 до win10 64 примерно 200 баз
возраст с 01,05,2018 по сегодня (устанавливалось в течении полугода ) размер данных от 200М до 1000М
по неясным причинам в 20 базах запрос - select * from table(pk_salary.salary_view) order by 1 отрабатывает очень медленно (100-300 сек), в 180 базах 0,1-2 сек
пытались найти закономерности
проверяли:
операционистки
разрядность оракла 32-64
настройки памяти
содержимое зависимых от запроса таблиц
сбор статистики
количество строк в результате запроса от 1000 до 9000 в разных базах, нет закономерности
упрощали переписывали функцию
закономерностей не нашли

пытались :
сбор статистики не помогает
пересоздание зависимых таблиц не помогает
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
переписать запрос на SQL (без функции) помогает на 100%, но не учитывает сложную логику
создание временной таблицы (вставка из функции) работает, но её нужно часть обновлять (delete insrt примерно 3-5 минут и в это время запросы подтормаживают)
поднимали разные базы на дохлых компах (ATOM 1G оперативы hdd5200 ) все рано работает быстро примерно 5-10 сек


возможно мы не там ищем, такие запросы применять стали недавно так как раньше особой необходимости в них не было


фразу "план запроса" я так понимаю вы уже слышали? и даже писали
Осталось сравнить их не только по внешнему запросу, но и по запросам из пакетa
А как - гуглить по фразе trace in oracle
10 апр 19, 15:27    [21858431]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
да советы помогли есть запрос внутри функции с разными планами
содержимое всех таблиц одинаковое
вопрос почему отличаются планы ?
возможно каким то образом план запроса из одной базы перемести в другую?
ну или что ту вообще можно сделать ?

+ запрос

SELECT SR.SALARY_RULE_ID,
SR.SALARY_HEAD_ID,
SR.SALARY_RULE_NAME,
SRT.SALARY_RULE_TYPE_NAME,
SR.SALARY_RULE_PRIORITY,
SR.SALARY_RULE_PARALEL,
SR.SALARY_RULE_TYPE_ID,
SRPRO.PRODUCT_VALUE
FROM T_SALARY_RULE SR,
T_SALARY_HEAD SH,
T_SALARY_RULE_TYPE SRT,
T_SALARY_RULE_PRODUCT SRPRO,
T_SALARY_RULE_PARTNER SRP
WHERE SRT.SALARY_RULE_TYPE_ID = SR.SALARY_RULE_TYPE_ID
AND SR.SALARY_HEAD_ID = SH.SALARY_HEAD_ID
AND SRT.SALARY_RULE_TYPE_ID = SR.SALARY_RULE_TYPE_ID
AND SRP.SALARY_RULE_ID = SR.SALARY_RULE_ID
AND SRPRO.SALARY_RULE_ID = SR.SALARY_RULE_ID
AND SRPRO.PRODUCT_ID = :B2
AND SRP.PARTNER_ID = :B1
AND SRP.IS_DEL_FLAG = 0
AND SRPRO.IS_DEL_FLAG = 0
AND SR.IS_DEL_FLAG = 0
AND SH.IS_DEL_FLAG = 0
AND SH.DOCUMENT_STATUS_ID = 290102
AND TRUNC (SYSDATE) BETWEEN SR.SALARY_HEAD_DATE_START
AND COALESCE (SR.SALARY_HEAD_DATE_END,
SH.SALARY_HEAD_DATE_END)

ORDER BY SR.SALARY_RULE_PRIORITY


+ план с тормозами


Plan hash value: 1701074962

-----------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 43 | 19436 | 3 (67)| 00:00:01 |
| 1 | SORT ORDER BY | | 43 | 19436 | 3 (67)| 00:00:01 |
| 2 | NESTED LOOPS | | | | | |
| 3 | NESTED LOOPS | | 43 | 19436 | 2 (50)| 00:00:01 |
| 4 | NESTED LOOPS | | 43 | 16641 | 2 (50)| 00:00:01 |
| 5 | NESTED LOOPS | | 2571 | 851K| 2 (50)| 00:00:01 |
| 6 | MERGE JOIN CARTESIAN | | 136K| 11M| 1 (0)| 00:00:01 |
|* 7 | TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE_PARTNER | 69 | 2691 | 1 (0)| 00:00:01 |
|* 8 | INDEX RANGE SCAN | IX_SRPAP_IS_DEL_FLAG | 35 | | 1 (0)| 00:00:01 |
| 9 | BUFFER SORT | | 1974 | 100K| 0 (0)| 00:00:01 |
|* 10 | TABLE ACCESS BY INDEX ROWID| T_SALARY_RULE_PRODUCT | 1974 | 100K| 0 (0)| 00:00:01 |
|* 11 | INDEX RANGE SCAN | IX_SRP_IS_DEL_FLAG | 789 | | 0 (0)| 00:00:01 |
|* 12 | TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE | 1 | 248 | 0 (0)| 00:00:01 |
|* 13 | INDEX RANGE SCAN | IX_SR_IS_DEL_FLAG | 1 | | 0 (0)| 00:00:01 |
|* 14 | TABLE ACCESS BY INDEX ROWID | T_SALARY_HEAD | 1 | 48 | 0 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | IX_SALH_DOCUMENT_STATUS_ID | 1 | | 0 (0)| 00:00:01 |
|* 16 | INDEX UNIQUE SCAN | PK_SALARY_RULE_TYPE | 1 | | 0 (0)| 00:00:01 |
| 17 | TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE_TYPE | 1 | 65 | 0 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

7 - filter("SRP"."PARTNER_ID"=TO_NUMBER(:B1))
8 - access("SRP"."IS_DEL_FLAG"=0)
10 - filter("SRPRO"."PRODUCT_ID"=TO_NUMBER(:B2))
11 - access("SRPRO"."IS_DEL_FLAG"=0)
12 - filter("SR"."SALARY_HEAD_DATE_START"<=TRUNC(SYSDATE@!) AND
"SRP"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID" AND "SRPRO"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID")
13 - access("SR"."IS_DEL_FLAG"=0)
14 - filter("SH"."IS_DEL_FLAG"=0 AND "SR"."SALARY_HEAD_ID"="SH"."SALARY_HEAD_ID" AND
COALESCE("SR"."SALARY_HEAD_DATE_END","SH"."SALARY_HEAD_DATE_END")>=TRUNC(SYSDATE@!))
15 - access("SH"."DOCUMENT_STATUS_ID"=290102)
16 - access("SRT"."SALARY_RULE_TYPE_ID"="SR"."SALARY_RULE_TYPE_ID")

Note
-----
- dynamic sampling used for this statement (level=2)


+ план без тормозов


Plan hash value: 1494712299

----------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 125 | 11 (10)| 00:00:01 |
| 1 | SORT ORDER BY | | 1 | 125 | 11 (10)| 00:00:01 |
| 2 | NESTED LOOPS | | 1 | 125 | 10 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1 | 112 | 9 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 1 | 92 | 8 (0)| 00:00:01 |
| 5 | MERGE JOIN CARTESIAN | | 2 | 74 | 6 (0)| 00:00:01 |
|* 6 | TABLE ACCESS BY INDEX ROWID | T_SALARY_HEAD | 1 | 20 | 2 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | IX_SALH_DOCUMENT_STATUS_ID | 4 | | 1 (0)| 00:00:01 |
| 8 | BUFFER SORT | | 2 | 34 | 4 (0)| 00:00:01 |
|* 9 | TABLE ACCESS BY INDEX ROWID| T_SALARY_RULE_PRODUCT | 2 | 34 | 4 (0)| 00:00:01 |
|* 10 | INDEX RANGE SCAN | IX_SRP_PRODUCT_ID | 2 | | 2 (0)| 00:00:01 |
|* 11 | TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE | 1 | 55 | 1 (0)| 00:00:01 |
|* 12 | INDEX UNIQUE SCAN | PK_SALARY_RULE | 1 | | 0 (0)| 00:00:01 |
| 13 | TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE_TYPE | 1 | 20 | 1 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | PK_SALARY_RULE_TYPE | 1 | | 0 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | UX_SRPAP | 1 | 13 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

6 - filter("SH"."IS_DEL_FLAG"=0)
7 - access("SH"."DOCUMENT_STATUS_ID"=290102)
9 - filter("SRPRO"."IS_DEL_FLAG"=0)
10 - access("SRPRO"."PRODUCT_ID"=TO_NUMBER(:B2))
11 - filter("SR"."IS_DEL_FLAG"=0 AND "SR"."SALARY_HEAD_DATE_START"<=TRUNC(SYSDATE@!) AND
"SR"."SALARY_HEAD_ID"="SH"."SALARY_HEAD_ID" AND COALESCE("SR"."SALARY_HEAD_DATE_END","SH"."SALARY_HEAD_D
ATE_END")>=TRUNC(SYSDATE@!))
12 - access("SRPRO"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID")
14 - access("SRT"."SALARY_RULE_TYPE_ID"="SR"."SALARY_RULE_TYPE_ID")
15 - access("SRP"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID" AND "SRP"."IS_DEL_FLAG"=0 AND
"SRP"."PARTNER_ID"=TO_NUMBER(:B1))
filter("SRP"."PARTNER_ID"=TO_NUMBER(:B1) AND "SRP"."IS_DEL_FLAG"=0)


К сообщению приложен файл (торм.txt - 3Kb) cкачать
11 апр 19, 09:07    [21858945]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
ilyuha111
Member

Откуда:
Сообщений: 62
все вопрос решиться
кому интересно

1 починили сбор статистики
план поменялся на нормально но запрос отрабатывал долго

2 alter system flush shared_pool
выполнили команду и все заработало
11 апр 19, 09:22    [21858952]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6644
ilyuha111
все вопрос решиться
кому интересно ...

Вы сами хоть какие-то выводы сделали для себя или нет?
даже тегом
begin
  null;
end;
пользоваться не научились!
11 апр 19, 09:34    [21858959]     Ответить | Цитировать Сообщить модератору
 Re: табличные конвейерные функции тормоза на разный базах  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29041
alex-ls
Вы сами хоть какие-то выводы сделали для себя или нет?
Некогда. Суперкомпьютер из 200 узелков простаивает же.
11 апр 19, 09:37    [21858961]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить