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

Откуда:
Сообщений: 124
Друзья,

столкнулся с такой задачей - где найти подробное описание действий, которые делаются с курсором
во время операций EXEC и FETCH.
Сразу предупреждаю любителей писать банальности вроде этой:

Execute cursor: The SQL statement is executed. But be careful—the database engine
doesn’t always do anything significant during this phase. In fact, for many types of queries,
the real processing is usually delayed to the fetch phase.

Fetch cursor: If the SQL statement returns data, this step retrieves it. Especially for queries,
this step is where most of the processing is performed. In the case of queries, the result set
might be partially fetched. In other words, the cursor might be closed before fetching all
the rows.

- интересует именно глубинное описание. Искал на Сети - ничего более вразумительного, чем приведенное выше, не нашел.
Вопрос возник в связи с тем, что один и тот же запрос в разное время или на разных данных/серверах БД,
в топе профиля ресурсов выдает то EXEC (CPU), то FETCH (CPU).

Итак:
- что же делает курсор во время EXEC?
- что делает оный во время FETCH?

Интересует ПРЕЖДЕ всего - SELECT.
И - в качестве бонуса - UPDATE & INSERT.


Спасибо.
1 ноя 19, 10:01    [22007776]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Synoptic
Member

Откуда:
Сообщений: 103
Вот тут подробней: https://habr.com/ru/post/429946/
1 ноя 19, 10:28    [22007808]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1229
Synoptic,

ну ты тролль
1 ноя 19, 10:34    [22007816]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29402
avdu
И - в качестве бонуса - UPDATE & INSERT.
Давай ты сам сперва выскажешь своё предположение, что же в таких случаях "делает оный во время FETCH?"
1 ноя 19, 11:13    [22007878]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
avdu
Member

Откуда:
Сообщений: 124
Elic
avdu
И - в качестве бонуса - UPDATE & INSERT.
Давай ты сам сперва выскажешь своё предположение, что же в таких случаях "делает оный во время FETCH?"


Здесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и
2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.

Последние бывают и с EXEC, но первые - нет (речь пока о SELECT).

Вот в связи с этим и любопытственно - что же (пока в случае SELECT) делает EXEC?

Хотелось бы препарировать EXEC и FETCH и сделать наглядное пособие.
Как в анатомии.
1 ноя 19, 12:33    [22008007]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Валерий Юринский
Member

Откуда: Москва, "ФОРС Дистрибуция"
Сообщений: 1158
avdu
Хотелось бы препарировать EXEC и FETCH и сделать наглядное пособие.
Как в анатомии.
Зачем и кому это нужно?
Много свободного времени на работе?
1 ноя 19, 13:02    [22008047]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29402
avdu
Здесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
Зачёт не сдан. Тебе, неуч, рано копать так глубоко.
1 ноя 19, 13:12    [22008059]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
avdu
Member

Откуда:
Сообщений: 124
Валерий Юринский
avdu
Хотелось бы препарировать EXEC и FETCH и сделать наглядное пособие.
Как в анатомии.
Зачем и кому это нужно?
Много свободного времени на работе?


Если вам это не нужно - не пишите сюда.
Мне - нужно. И именно на работе и по работе.
Все просто.
1 ноя 19, 13:18    [22008071]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
avdu
Member

Откуда:
Сообщений: 124
Elic
avdu
Здесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
Зачёт не сдан. Тебе, неуч, рано копать так глубоко.


Я тебе зачеты и не сдаю.
Не вышел лицом.
1 ноя 19, 13:19    [22008073]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
-2-
Member

Откуда:
Сообщений: 14994
avdu
что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и
2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.
Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть.
Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев.
avdu
Валерий Юринский
Зачем и кому это нужно?
Если вам это не нужно - не пишите сюда.
Мне - нужно. И именно на работе и по работе.
Все просто.
Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят.
1 ноя 19, 13:20    [22008077]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
avdu
Member

Откуда:
Сообщений: 124
-2-
avdu
что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и
2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.
Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть.
Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев.
Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят.


Очень видно (очевидно) - это где? Для красного словца?

Я намеренно упростил ответ - очевидно!!! бывает по разному.

В начальном посту я написал, для чего это нужно.

Очевидно!!!, придется искать самому. Тем более мне-то ясно, для чего это нужно.

Ну что-ж, найдем, не впервой.
1 ноя 19, 13:33    [22008096]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29402
avdu
Ну что-ж, найдем, не впервой.
Валяй.
Только в следующий раз говори сразу, что ты д'артаньян, чтобы на тебя время не тратили.
1 ноя 19, 13:46    [22008104]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Кобанчег
Member

Откуда: Рахів
Сообщений: 593
avdu
Очевидно!!!, придется искать самому. Тем более мне-то ясно, для чего это нужно.

Ну что-ж, найдем, не впервой.
Юнош, какой-то ты слишком нервный и нежный для технического специалиста.

Во-первых ты не показал свою проблему, может ты вообще не те цифры смотришь.

Во-вторых у тебя скорее всего не тот уровень чтоб сюда копать раз ты даже не знаешь какие ключевые слова ввести в поисковик,
чтоб найти кучу инфы. И сооответственно у отвечающих подозрение что детальная инфа тебя еще больше запутает.

В-третих вопрос "что делает курсор" сразу наводит на мысль, что ты вообще не отстреливаешь что и как устроено. Курсор это структура в памяти. Он ничего не делает.

В-четвертых сам тон "в качестве бонуса" от тебя сразу отталкивает это раз. Если б ты понимал что такое rowsource, ты бы не разделял в этом плане select/insert/update это два.

Держи, просвещайся
https://blog.tanelpoder.com/2008/06/15/advanced-oracle-troubleshooting-guide-part-6-understanding-oracle-execution-plans-with-os_explain/

Потом расскажешь как это тебе помогло. :)
1 ноя 19, 13:49    [22008109]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
avdu
Member

Откуда:
Сообщений: 124
Прошу всех, кому сказать нечего, не тратить свое время и не упражнять свое хамское красноречие.

Займитесь делом более полезным, не отвлекайтесь на то, что кажется вам глупым и вас недостойным.

Есть же еще на Руси великой и приличные люди?
1 ноя 19, 14:30    [22008149]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7902
avdu,

Не реагируйте как неудачник
1 ноя 19, 14:42    [22008159]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
Я и ёжик
Member

Откуда: СПб
Сообщений: 1815
В цепочке 'open - parse - bind - exec - fetch - close' при включенном и используемом bind пикинг на стадию Exec переходит построение плана запроса, поскольку на фазе parse еще нет данных о значениях bind.
Соответственно "Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные" и еще куча всего используемого при построении плана и рекурсивными запросами могут присутствовать.

Так же в трассировке с бинд переменными время вывода в трейс значений переменных так же попдает на стадию EXEC, отсюда на 12 уровне трассирвки при запросах с большим числом биндов можно видеть искажения когда для простого SELECT на EXEC начинает приходится большее время , чем на стадию FETCH.
1 ноя 19, 14:51    [22008167]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
xtender
Member

Откуда: Мск
Сообщений: 5250
avdu
Вопрос возник в связи с тем, что один и тот же запрос в разное время или на разных данных/серверах БД,
в топе профиля ресурсов выдает то EXEC (CPU), то FETCH (CPU).
вообще не в ту сторону копаете. Объяснить многие из тех, кто уже тут ответили могут легко, но видят, что вам это не нужно и не поможет.

Зы. И не надо тут так воинственно спорить. Хотя бы немного стоит подумать, если несколько человек уже указали на странность вопроса.

Зыы. А не вы ли так яростно заявляли, что все и всегда надо трассировать с 10046?
1 ноя 19, 15:05    [22008178]     Ответить | Цитировать Сообщить модератору
 Re: EXEC и FETCH курсора  [new]
xtender
Member

Откуда: Мск
Сообщений: 5250
да, нашел: https://www.sql.ru/forum/1274874-a/stoimost-raboty-ne-oracle-voy
1 ноя 19, 15:25    [22008199]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить