powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
48 сообщений из 48, показаны все 2 страниц
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766389
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

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

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

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

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

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

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

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

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

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

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

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

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

EvgeniaMakarovaправ включить трассировку нетalter session отобрали?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766536
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,
имею запрос, имею данные из v$parameter. какие конкретно параметры надо сравнить ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766539
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

подскажите пожалуйста как запросом получить данные из трассировочного файла 10053
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766572
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaподскажите пожалуйста как запросом получить данные из трассировочного файла 10053bfilename или external table
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766578
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
EvgeniaMakarova,

если вы не разбираетесь в этом и не отвечаете за сбор статистики, то вам и не надо этим заниматься. Просто скажите админам сравнить 10053 на обоих базах.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766639
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

это запрос уже юзает уникальные индексы и кост упал радикально.
Раскройте тайну, как Вы рассуждали и почему все же индексы не юзаются в исходной версии ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766654
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кост упал а запрос так и висит(
слушайте, один из PK индексов (то есть уникальный) показывает в плане Кардинальность 19760 , вместо 1. почему такое может быть ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766658
Фотография 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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766664
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
да, на проблематичном сервере план пишет что он адаптив
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766671
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaда, на проблематичном сервере план пишет что он адаптив

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

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #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
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766678
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, мне не надо переписывать, мне надо понять почему он индексы не юзает. Запрос отстойный это ясное дело.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766679
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaмне не надо переписывать, мне надо понять почему он индексы не юзает.Переписать - не надо, трассы почитать - не в состоянии. Ты вообще там кто?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766680
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.
33.
34.
SELECT   /*+FIRST_ROWS*/
    col2,
    col5
FROM
    (
        SELECT
            f.col2,
            f.col5
        FROM
            t4 f
        UNION ALL
        SELECT
            a.col2,
            nvl( (select e.col5
                    from 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
                  )
             ,-1) col5
        FROM
            (   SELECT g.col2
                  FROM t6 g
                minus
                SELECT col2
                  FROM t4
            ) a
     ) t
ORDER BY col2;
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766683
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
на проблематичном выдает так :
optimizer_adaptive_plans boolean TRUE
optimizer_adaptive_reporting_only boolean FALSE
optimizer_adaptive_statistics boolean FALSE
parallel_adaptive_multi_user boolean FALSE

на нормальном тоже самое плюс еще параметры
NAME TYPE VALUE
------------------------------------- ------- ------
_adaptive_window_consolidator_enabled boolean TRUE
_optimizer_adaptive_cursor_sharing boolean TRUE
_optimizer_nlj_hj_adaptive_join boolean TRUE
_optimizer_strans_adaptive_pruning boolean TRUE
_px_adaptive_dist_bypass_enabled boolean TRUE
_px_adaptive_dist_method string CHOOSE
optimizer_adaptive_plans boolean TRUE
optimizer_adaptive_reporting_only boolean FALSE
optimizer_adaptive_statistics boolean FALSE
parallel_adaptive_multi_user boolean FALSE
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766686
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посколько optimizer_adaptive_features не вижу, ты на 12.2. На 12.2 с adaptive особо не баловался. Попробуй банально ALTER SESSION SET optimizer_adaptive_plans = FALSE; выполни SQL и посмотри результат.

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766689
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYПосколько optimizer_adaptive_features не вижу, ты на 12.2.
На 12.1 патчик был (вроде в составе CPU от осени 2017), который разделял общий optimizer_adaptive_features на optimizer_adaptive_plans и optimizer_adaptive_statistics а-ля 12.2.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766699
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

все равно не юзает индексы.
я там выше спрашивала, может пропустили, а может я глупость спросила - для юник индекса в плане кардинальность не 1 (см аттач) . так может быть ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766701
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
как я рад, что врачи так не работают
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766702
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНа 12.1 патчик был (вроде в составе CPU от осени 2017), который разделял общий optimizer_adaptive_features на optimizer_adaptive_plans и optimizer_adaptive_statistics а-ля 12.2.

Не раделил а добавил:

Код: 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.
SQL> select version from v$instance;

VERSION
-----------------
12.1.0.2.0

SQL> SHOW PARAMETER ADAPTIVE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_adaptive_features          boolean     FALSE
optimizer_adaptive_plans             boolean     FALSE
optimizer_adaptive_reporting_only    boolean     FALSE
optimizer_adaptive_statistics        boolean     FALSE
parallel_adaptive_multi_user         boolean     TRUE
SQL> alter session set optimizer_adaptive_features = true;

Session altered.

SQL> SHOW PARAMETER ADAPTIVE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_adaptive_features          boolean     TRUE
optimizer_adaptive_plans             boolean     TRUE
optimizer_adaptive_reporting_only    boolean     FALSE
optimizer_adaptive_statistics        boolean     TRUE
parallel_adaptive_multi_user         boolean     TRUE
SQL> 



SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766704
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
EvgeniaMakarova,

раз с 10053 не справилась, дай хоть отчет sqld360 по этому запросу с обоих баз
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766705
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тады 10053 тебе в руки :)

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766706
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНе раделил а добавил:
По инструкции optimizer_adaptive_features надо было убрать из spfile :)
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766707
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
ну озадачу админов тогда делать 10053 все же . спасибо. будут новости -напишу
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766708
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaдля юник индекса в плане кардинальность не 1 (см аттач) . так может быть ?

Конечно может.
...и это вполне объективная причина проигнорить индекс.

Код: 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.
create table dropme_t (n not null unique)
as select rownum from dual connect by level < 1e5;

Table created

explain plan for
  select * from dropme_t where n = :1;

Explained

select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2448883205
--------------------------------------------------------------------------------
| Id  | Operation         | Name         | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |              |     1 |     5 |     1   (0)| 00:00:01
|*  1 |  INDEX UNIQUE SCAN| SYS_C0058790 |     1 |     5 |     1   (0)| 00:00:01
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("N"=TO_NUMBER(:1))

13 rows selected

explain plan for
  select * from dropme_t where n >= :1;

Explained

select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 1749615820
--------------------------------------------------------------------------------
| Id  | Operation        | Name         | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT |              |  5000 | 25000 |     2   (0)| 00:00:01
|*  1 |  INDEX RANGE SCAN| SYS_C0058790 |  5000 | 25000 |     2   (0)| 00:00:01
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("N">=TO_NUMBER(:1))
13 rows selected

SQL> 

...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766710
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousКонечно может.
...хотя у Вас же unique scan... Статистику не пробовали пересобрать?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766717
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766722
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousSYНе раделил а добавил:
По инструкции optimizer_adaptive_features надо было убрать из spfile :)

Согласен, но если не ошибаюсь alter session set optimizer_adaptive_features = true; все равно свое дело сделает.

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766734
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардоньте за вопрос, но объём возвращаемых данных на всех окружениях одинаковый?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766914
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

я не могу дождаться результата запроса на проблемном сервере.

Но. Мне админы прислали трейсы 10053 с обоих серверов и на проблематичном сервере видно что идет dynamic sampling по двум табам из запроса.
Попросила их пересобрать статистику. посмотрим .
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766957
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

переписанный Вами запрос,Ваша версия, возвращает одинаковое число строк на всех окружениях.

Я на всякий случай сравнила с числом строк возвращаемых исходным запросом на "быстром окружении" - старый запрос возвращает где-то в три раза больше строк, и на проверку они конечно оказались дубликатами.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39767024
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем ДБА пишут что статистику удалили и собрали заново и такая же фигня.

Из трейс файлов 10053 я докопалась что запрос :

SELECT
a.col1
FROM
t1 a
WHERE
NOT
EXISTS (
SELECT
1
FROM
t2 b
WHERE
b.col1 = a.col1
)
*при not in - такое же поведение оптимизатора

на проблемном сервере НЕ юзает индекс по t1 (col1 - первичный ключ), но при поиске просто EXISTS -юзает unique index по col1

на другом сервер юзает индекс в обоих случаях и делает райт анти джойн.

Есть мысли почему ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39767043
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
EvgeniaMakarovaЕсть мысли почему ?вы издеваетесь? гадать при том, что вы уже даже получили трейсы, но не хотите их показать?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39767046
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, всё дело в самих данных.

В t1 лежит всего пару-тройку записей, которые есть в t2, поэтому при EXISTS'е он идёт по PK.
А так как 99% всех записей из t1 нет в t2, то оракл не заморачиваясь сразу смотрит всю таблицу.

Посмотрите соотношение EXISTS и NOT EXISTS записей на разных окружениях.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39767176
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

Ребята, я разобралась:-)

На "плохом" окружении ВСЕ столбцы которые not null идут NOVALIDATE..., в том числе те уникальные которые идут в соединениях и тп. ВСЕ вообще.


На двух других "хороших" они идут not null validated.

Ларчик не просто открывался, учитывая что я думала что как минимум две 12-ки развернуты одним и тем же способом из одного и того же дампа и разницы в определениях таб нет.
Незнаю как админы так наразворачивали БД. Знаю что они делали миграцию с 10-ки на 12-ку и чтото пошло не так, подробностей не знаю, потом вроде починили.
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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