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

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


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

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

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

И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут
зуб даю)))
...
Рейтинг: 0 / 0
Подскажите, что почитать по оптимизации запросов?
    #39955390
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавлю
если у вас ХД, то там немного по другому строится весь процесс
там материализация рулит
...
Рейтинг: 0 / 0
Подскажите, что почитать по оптимизации запросов?
    #39955413
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинак
И когда в столбце cardinality будут сотни или тыщи, то проблемы уйдут
зуб даю)))
А если начинающая "блондинка" поймёт это как delete или даже truncate?
...
Рейтинг: 0 / 0
Подскажите, что почитать по оптимизации запросов?
    #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
Подскажите, что почитать по оптимизации запросов?
    #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
Подскажите, что почитать по оптимизации запросов?
    #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
Подскажите, что почитать по оптимизации запросов?
    #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
Подскажите, что почитать по оптимизации запросов?
    #39955519
Бумбараш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинак

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

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


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