Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, что почитать по оптимизации запросов? / 15 сообщений из 15, страница 1 из 1
08.05.2020, 09:44
    #39955182
Евгения_Д
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Добрый день.
Подскажите, что почитать по оптимизации запросов?
Описание методов доступа, хинтов и практических решений по по оптимизации запроса.
Много чего нагуглила, но это все или слишком поверхностно или не для новичков.
Хочется подробно и понятно. :)
...
Рейтинг: 0 / 0
08.05.2020, 10:39
    #39955199
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Евгения_Д,

Oracle-документация, Льюис.
...
Рейтинг: 0 / 0
08.05.2020, 10:46
    #39955201
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
AmKad
Льюис.
Кэрролл, конечно же?
...
Рейтинг: 0 / 0
08.05.2020, 10:48
    #39955202
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Elic
AmKad
Льюис.
Кэрролл, конечно же?
Джонатан Льюис "Основы стоимостной оптимизации".
...
Рейтинг: 0 / 0
08.05.2020, 16:40
    #39955389
казинак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
AmKad
Elic
пропущено...
Кэрролл, конечно же?
Джонатан Льюис "Основы стоимостной оптимизации".


херня этот Льюис, не тратьте время на его чтение
чисто для расширения кругозора, Кайт достаточно доступно описал методы доступа и проч фишки, (всякие sort-merge, index fast full scan и т.д.), в своей книге Effective Oracle By Design

Но лично мой план действий (по опыту):
во первых смотришь что в топе, либо в awr, либо в ash либо в реальном времени через v$...
во вторых, берешь план и смотришь в столбец cardinality
если там сотни тыщ или мильоны - это плохо
по сути это значит что оракл перелопачивает эти сотни мильонов записей в памяти,
при одновременной работе сотен и тыщ юзеров - это вешает систему

что с этим делать?
вариантов не так много:
переписать запрос (не полностью, но немного), добавить индекс, или хинт

И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут
зуб даю)))
...
Рейтинг: 0 / 0
08.05.2020, 16:41
    #39955390
казинак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
добавлю
если у вас ХД, то там немного по другому строится весь процесс
там материализация рулит
...
Рейтинг: 0 / 0
08.05.2020, 17:21
    #39955413
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
казинак
И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут
зуб даю)))
А если начинающая "блондинка" поймёт это как delete или даже truncate?
...
Рейтинг: 0 / 0
08.05.2020, 18:10
    #39955420
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
казинак
И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут
зуб даю)))


Ок, Льюиса чтить не бум.
Подскажите плиз, Что Я Делаю Не Так?

Код: 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.
50.
51.
SQL> begin dbms_stats.gather_table_stats(user,'dropme_t',method_opt => 'for all indexed columns size skewonly'); end;
  2  /

PL/SQL procedure successfully completed.

SQL>
SQL> var x number;
SQL>
SQL> exec :x := 1;

PL/SQL procedure successfully completed.

SQL>
SQL> SET AUTOTRACE ON;
SQL>
SQL> select count(*)
  2    from dropme_t
  3   where x1 = :x
  4     and x2 = :x
  5     and x3 = :x
  6     and x4 = :x
  7     and x5 = :x
  8     and x6 = :x
  9     ;

  COUNT(*)
----------
    500000

1 row selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 3360040140

-------------------------------------------------------------------------------
| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |          |     1 |    18 |   704   (3)| 00:00:01 |
|   1 |  SORT AGGREGATE    |          |     1 |    18 |            |          |
|*  2 |   TABLE ACCESS FULL| DROPME_T | 15625 |   274K|   704   (3)| 00:00:01 |
-------------------------------------------------------------------------------

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

   2 - filter("X1"=TO_NUMBER(:X) AND "X2"=TO_NUMBER(:X) AND
              "X3"=TO_NUMBER(:X) AND "X4"=TO_NUMBER(:X) AND "X5"=TO_NUMBER(:X) AND
              "X6"=TO_NUMBER(:X))

SQL>
...
Рейтинг: 0 / 0
09.05.2020, 02:43
    #39955510
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
andrey_anonymous

Ок, Льюиса чтить не бум.
Подскажите плиз, Что Я Делаю Не Так?

-1. не сказал версию оракла.
0. не показал структуру таблицы и индексов на ней.
1. в зависимости от 0 сбор статистики с укзанными опциями может быть совсем бесполезен для перечисленных столбцов (если они не в индексе)
2. гистограммы с биндами не работают
3. sqlplus c autotrace и биндами показывает план не такой, как на самом деле
4. одну переменную подставлять в одном запросе несколько раз - в принципе не кошерно

я бы, ничего не зная из вышеизложенного, переписал для начала так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin dbms_stats.gather_table_stats(user,'dropme_t',method_opt => 'for all columns auto'); end;

with t(x) as (select 1 from dual)
select count(*)
   from dropme_t t1, t0
  where t1.x1 = t0.x
   and  t1.x2 = t1.x1
   and  t1.x3 = t1.x1
   and  t1.x4 =t1.x1
   and  t1.x5 = t1.x1
   and  t1.x6 = t1.x1



а дальше бы посмотрел по результату и, если не помогло, стал бы настойчиво узнавать всё же структуру индексов на таблице.
а потом бы и обратил внимание на опцию сбора статистики

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

Минута гугления:

https://groups.google.com/forum/#!msg/relcom.comp.dbms.oracle/xrwStdf7WaI/taz6tUOhbGsJ

подскажите про гистограммы
...
Рейтинг: 0 / 0
09.05.2020, 02:44
    #39955511
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Евгения_Д
Добрый день.
Подскажите, что почитать по оптимизации запросов?
Описание методов доступа, хинтов и практических решений по по оптимизации запроса.
Много чего нагуглила, но это все или слишком поверхностно или не для новичков.
Хочется подробно и понятно. :)


я бы начал отсюда
https://iusoltsev.wordpress.com/profile/individual-sql-and-cbo/cbo-access-path/
и отсюда
https://iusoltsev.wordpress.com/profile/individual-sql-and-cbo/dbms_xplan/

А дальше на любое непонятное слово - поиск и осваивание подробностей около этого.
даже если очень хорошую книгу прочесть залпом без практики и "ментального прожёвывания" - пользы не будет.
...
Рейтинг: 0 / 0
09.05.2020, 04:06
    #39955518
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Fogel
andrey_anonymous

Ок, Льюиса чтить не бум.
Подскажите плиз, Что Я Делаю Не Так?

-1. не сказал версию оракла.
0. не показал структуру таблицы и индексов на ней.
1. в зависимости от 0 сбор статистики с укзанными опциями может быть совсем бесполезен для перечисленных столбцов (если они не в индексе)
2. гистограммы с биндами не работают
3. sqlplus c autotrace и биндами показывает план не такой, как на самом деле
4. одну переменную подставлять в одном запросе несколько раз - в принципе не кошерно

я бы, ничего не зная из вышеизложенного, переписал для начала так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin dbms_stats.gather_table_stats(user,'dropme_t',method_opt => 'for all columns auto'); end;

with t(x) as (select 1 from dual)
select count(*)
   from dropme_t t1, t0
  where t1.x1 = t0.x
   and  t1.x2 = t1.x1
   and  t1.x3 = t1.x1
   and  t1.x4 =t1.x1
   and  t1.x5 = t1.x1
   and  t1.x6 = t1.x1



а дальше бы посмотрел по результату и, если не помогло, стал бы настойчиво узнавать всё же структуру индексов на таблице.
а потом бы и обратил внимание на опцию сбора статистики

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

Минута гугления:

https://groups.google.com/forum/#!msg/relcom.comp.dbms.oracle/xrwStdf7WaI/taz6tUOhbGsJ

подскажите про гистограммы
абсолютно всё нерелевантно примеру. Гордиться тем, что не читал Льюиса точно не стоит. Прочитай и поймёшь о чем был пример.

Зы. Гугление никак не способствует систематизации знаний.
...
Рейтинг: 0 / 0
09.05.2020, 04:10
    #39955519
Бумбараш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
казинак

И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут

оптимизация уровень Бог
...
Рейтинг: 0 / 0
11.05.2020, 17:15
    #39955936
TheRookie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Fogel
я бы начал отсюда
https://iusoltsev.wordpress.com/profile/individual-sql-and-cbo/cbo-access-path/
и отсюда
https://iusoltsev.wordpress.com/profile/individual-sql-and-cbo/dbms_xplan/

А дальше на любое непонятное слово - поиск и осваивание подробностей около этого.
даже если очень хорошую книгу прочесть залпом без практики и "ментального прожёвывания" - пользы не будет.

В каком инструменте можно это делать (sql developer, pl/sql developer)?
Какие гранты нужны для этого?
...
Рейтинг: 0 / 0
12.05.2020, 16:36
    #39956369
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Fogel
andrey_anonymous

Ок, Льюиса чтить не бум.
Подскажите плиз, Что Я Делаю Не Так?

-1. не сказал версию оракла.

10.*, 11.*, 12.*

Fogel

0. не показал структуру таблицы и индексов на ней.

Индексов нет.
Структура - 6 атрибутов типа number, x1..x6.
Fogel

1. в зависимости от 0 сбор статистики с укзанными опциями может быть совсем бесполезен для перечисленных столбцов (если они не в индексе)
мимо.
Fogel

2. гистограммы с биндами не работают
мимо.
Fogel

3. sqlplus c autotrace и биндами показывает план не такой, как на самом деле
мимо.
Fogel

4. одну переменную подставлять в одном запросе несколько раз - в принципе не кошерно
мимо.
Fogel

я бы, ничего не зная из вышеизложенного, переписал для начала так:
Хоть 25 раз.
Эта демка - простейший тест на понимание природы той самой "кардинальности", на которой завязан данный Вами совет.

Fogel

Подход: внимательность и гугление на любое непонятное слово - систематизация знаний и их практическое освоение.

Найдите все-таки время внимательно почитать того же Льюиса - систематизация выйдет существенно лучше, чем от гугления непонятных слов.
Заодно узнаете, почему CBO может ТАК ошибаться в оценке кардинальности :)
...
Рейтинг: 0 / 0
12.05.2020, 21:43
    #39956506
Timur Akhmadeev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, что почитать по оптимизации запросов?
Не советую начинать с CBO Fundamentals - это очень сложная книга для старта.
Возьмите Troubleshooting Oracle Performance. Лучшая книга не только для начинающего.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите, что почитать по оптимизации запросов? / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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