Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным / 25 сообщений из 48, страница 1 из 2
29.01.2019, 11:49
    #39766389
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Всем привет!

У меня есть 3 окружения и один проблематичный запрос, который на 2-х окружениях отрабатывает за секунды и юзает index unique scan по первичным ключам (4 табы и по каждой идет доступ по PK), а на третьем окружении запрос висит и висит и смотря на execution plan он не юзает индексы а идет table access storage full.

Обьемы данных примерно одинаковые на всех трех окружениях, статистика собрана, clustering_factor примерно одинаковый по используемым индексам, хотя он и очень большой и равен кол-ву строк в табах, но все равно даже с таким фактором быстро работает на остальных окружениях.

Два окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12.

В какую сторону смотреть ?
...
Рейтинг: 0 / 0
29.01.2019, 12:06
    #39766402
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarova,

какая статистика (объектная, гистограммы, системная) и как именно собрана?
конфигурация и настройки стендов примерно околоодинаковые?
...
Рейтинг: 0 / 0
29.01.2019, 12:18
    #39766420
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Щукина Анна,

как собрана статистика не знаю, этим ДБА заведуют, я вижу last_analyzed . гистограммы есть по всем табам из запроса.

про настройки не знаю, думаю что собака зарыта там, но что конкретно надо смотреть?

Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle, незнаю как уж они разбирались и что такого нашли что сами починить не могут.
...
Рейтинг: 0 / 0
29.01.2019, 12:19
    #39766423
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarova,

в сторону трассы 10053
...
Рейтинг: 0 / 0
29.01.2019, 12:37
    #39766450
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
xtender,

а без него как? мне его будет трудно получить - ни разу не могла дождаться окончания выполнения запроса, и доступа на сервер нет, прав включить трассировку нет:-) идти к ДБА уже стремно , думала может есть такие прям классические причины когда уникальный индекс перестает браться оптимизатором?
...
Рейтинг: 0 / 0
29.01.2019, 12:38
    #39766452
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaЩукина Анна,
Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle,.
:)
...
Рейтинг: 0 / 0
29.01.2019, 12:46
    #39766460
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaидти к ДБА уже стремно , думала может есть такие прям классические причины если причины классические, то без DBA всё одно мало чего сможете сделать.
К тексту запроса доступ имеете? Вносить в него изменения можете? Получить параметры настроек оптимизатора для сессии на нормальных и на приболевшем инстансах - сможете?
...
Рейтинг: 0 / 0
29.01.2019, 12:58
    #39766467
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Щукина Анна,

может, там память или процы другие
...
Рейтинг: 0 / 0
29.01.2019, 13:10
    #39766482
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaмне его будет трудно получить - ни разу не могла дождаться окончания выполнения запросаПлан строится при парсе. Выполнять запрос не обязательно.

EvgeniaMakarovaдоступа на сервер нетесли есть права на directory, то получить файл можно sqlем.

EvgeniaMakarovaправ включить трассировку нетalter session отобрали?
...
Рейтинг: 0 / 0
29.01.2019, 13:17
    #39766494
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
-2-EvgeniaMakarovaправ включить трассировку нетalter session отобрали?RTFM Prerequisites
To enable and disable the SQL trace facility, you must have ALTER SESSION system privilege.
To enable or disable resumable space allocation, you must have the RESUMABLE system privilege.
You do not need any privileges to perform the other operations of this statement unless otherwise indicated.
...
Рейтинг: 0 / 0
29.01.2019, 14:18
    #39766536
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Щукина Анна,
имею запрос, имею данные из v$parameter. какие конкретно параметры надо сравнить ?
...
Рейтинг: 0 / 0
29.01.2019, 14:21
    #39766539
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
-2-,

подскажите пожалуйста как запросом получить данные из трассировочного файла 10053
...
Рейтинг: 0 / 0
29.01.2019, 14:29
    #39766544
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Щукина Анна,


Эти параметры одинаковые на двух сравниваемых 12-шках :

optimizer_mode

optimizer_index_cost_adj

optimizer_index_caching

optimizer_dynamic_sampling

db_file_multiblock_read_count

hash_area_size

sort_area_size
...
Рейтинг: 0 / 0
29.01.2019, 14:38
    #39766557
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaЩукина Анна,


Эти параметры одинаковые на двух сравниваемых 12-шках :

optimizer_mode

optimizer_index_cost_adj

optimizer_index_caching

optimizer_dynamic_sampling

db_file_multiblock_read_count

hash_area_size

sort_area_sizeдавайте уже сам запрос
А вдруг там десяток фулл аутеров по лайкам
...
Рейтинг: 0 / 0
29.01.2019, 14:51
    #39766565
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
andreymx,

запрос выглядит так (таблицы и столбцы переименованы.все остальное оригинальное, в том числе хинт :-)):
*Если что, то запрос писала не я, и каким бы он страшным и ужасным ни был, он работает быстро на других окружениях и юзает уникальные индексы:-)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT   /*+FIRST_ROWS*/
    col2,
    col5
FROM
    (
        SELECT
            a.col2,
            a.col5
        FROM
            t4 a
        UNION ALL
        SELECT
            a.col2,
            DECODE(
                e.col5,
                NULL,
                -1,
                e.col5
            ) col5
        FROM
            (
                SELECT
                    a.col2
                FROM
                    t6 a
                WHERE
                    a.col2 NOT IN (
                        SELECT
                            col2
                        FROM
                            t4
                        WHERE
                            col2 = a.col2
                    )
            ) a,
            t2 b,
            t1 c,
            t3 d,
            t4 e
        WHERE
                a.col2 = b.col2 (+)
            AND
                b.col1 = c.col1 (+)
            AND
                c.col1 = d.col1 (+)
            AND
                d.col3 = e.col3 (+)
    ) b
ORDER BY col2;
...
Рейтинг: 0 / 0
29.01.2019, 14:58
    #39766572
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaподскажите пожалуйста как запросом получить данные из трассировочного файла 10053bfilename или external table
...
Рейтинг: 0 / 0
29.01.2019, 15:05
    #39766578
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarova,

если вы не разбираетесь в этом и не отвечаете за сбор статистики, то вам и не надо этим заниматься. Просто скажите админам сравнить 10053 на обоих базах.
...
Рейтинг: 0 / 0
29.01.2019, 15:20
    #39766595
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT /*+FIRST_ROWS*/ col2, col5
  FROM (SELECT a.col2, a.col5 FROM t4 a
        UNION ALL
        SELECT a.col2, -1 col5 FROM (SELECT col2 FROM t6 MINUS SELECT col2 FROM t4) a
         WHERE NOT EXISTS (select 'null' from t2 b
                                         join t1 c on b.col1 = c.col1
                                         join t3 d on c.col1 = d.col1
                                         join t4 e on d.col3 = e.col3
                            where a.col2 = b.col2)
        UNION ALL
        SELECT a.col2, e.col5              FROM (SELECT col2 FROM t6 MINUS SELECT col2 FROM t4) a
                                           join t2 b on a.col2 = b.col2
                                           join t1 c on b.col1 = c.col1
                                           join t3 d on c.col1 = d.col1
                                           join t4 e on d.col3 = e.col3
        ) b
ORDER BY col2;
...
Рейтинг: 0 / 0
29.01.2019, 16:09
    #39766639
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Dshedoo,

это запрос уже юзает уникальные индексы и кост упал радикально.
Раскройте тайну, как Вы рассуждали и почему все же индексы не юзаются в исходной версии ?
...
Рейтинг: 0 / 0
29.01.2019, 16:23
    #39766654
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
кост упал а запрос так и висит(
слушайте, один из PK индексов (то есть уникальный) показывает в плане Кардинальность 19760 , вместо 1. почему такое может быть ?
...
Рейтинг: 0 / 0
29.01.2019, 16:31
    #39766658
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaДва окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12.


Обe 12C на одинаковых patchset/patch? Если нет возможности/умения анализировать 10053, провeрить adaptive. С ним зачастую чудеса в решете. Смотри explain plan на обеих 12c на предмет "this is adaptive plan", "statistics feedback used for this statement" ну и dynamic sampling.

SY.
...
Рейтинг: 0 / 0
29.01.2019, 16:33
    #39766664
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
SY,
да, на проблематичном сервере план пишет что он адаптив
...
Рейтинг: 0 / 0
29.01.2019, 16:40
    #39766671
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarovaда, на проблематичном сервере план пишет что он адаптив

Т.e. две 12C это apples & oranges. В SQL*Plus на обеих 12C выдай SHOW PARAMETER ADAPTIVE и сравни.

SY.
...
Рейтинг: 0 / 0
29.01.2019, 16:45
    #39766677
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
EvgeniaMakarova,

Я бы начал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SELECT   /*+FIRST_ROWS*/
    col2,
    col5
FROM
    (
        SELECT
            f.col2,
            f.col5
        FROM
            t4 f
        UNION ALL
        SELECT
            a.col2,
            nvl(e.col5,-1) col5
        FROM
            (   SELECT g.col2
                  FROM t6 g
                minus
                SELECT col2
                  FROM t4
            ) a,
            t2 b,
            t1 c,
            t3 d,
            t4 e
        WHERE a.col2 = b.col2 (+)
          AND b.col1 = c.col1 (+)
          AND b.col1 = d.col1 (+)
--          AND c.col1 = d.col1 (+)
          AND d.col3 = e.col3 (+)
    ) b
ORDER BY col2;



1. переправил все алиасы на уникальные
2. прописал minus
3. decode -> nvl
4. таблица t1 c, нужна для not exists только ...

но первое - обязательно, у Вас 3 алиаса с именем "a" что может запутать Oracle (да и Вас)
...
Рейтинг: 0 / 0
29.01.2019, 16:47
    #39766678
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
MaximaXXL, мне не надо переписывать, мне надо понять почему он индексы не юзает. Запрос отстойный это ясное дело.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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