Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXEC и FETCH курсора / 18 сообщений из 18, страница 1 из 1
01.11.2019, 10:01
    #39884023
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
Друзья,

столкнулся с такой задачей - где найти подробное описание действий, которые делаются с курсором
во время операций 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.


Спасибо.
...
Рейтинг: 0 / 0
01.11.2019, 10:28
    #39884045
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
Вот тут подробней: https://habr.com/ru/post/429946/
...
Рейтинг: 0 / 0
01.11.2019, 10:34
    #39884049
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
Synoptic,

ну ты тролль
...
Рейтинг: 0 / 0
01.11.2019, 11:13
    #39884096
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduИ - в качестве бонуса - UPDATE & INSERT.Давай ты сам сперва выскажешь своё предположение, что же в таких случаях "делает оный во время FETCH?"
...
Рейтинг: 0 / 0
01.11.2019, 12:33
    #39884184
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
ElicavduИ - в качестве бонуса - 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 и сделать наглядное пособие.
Как в анатомии.
...
Рейтинг: 0 / 0
01.11.2019, 13:02
    #39884217
Валерий Юринский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduХотелось бы препарировать EXEC и FETCH и сделать наглядное пособие.
Как в анатомии.Зачем и кому это нужно?
Много свободного времени на работе?
...
Рейтинг: 0 / 0
01.11.2019, 13:12
    #39884226
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduЗдесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идутЗачёт не сдан. Тебе, неуч, рано копать так глубоко.
...
Рейтинг: 0 / 0
01.11.2019, 13:18
    #39884234
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
Валерий ЮринскийavduХотелось бы препарировать EXEC и FETCH и сделать наглядное пособие.
Как в анатомии.Зачем и кому это нужно?
Много свободного времени на работе?

Если вам это не нужно - не пишите сюда.
Мне - нужно. И именно на работе и по работе.
Все просто.
...
Рейтинг: 0 / 0
01.11.2019, 13:19
    #39884236
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
ElicavduЗдесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идутЗачёт не сдан. Тебе, неуч, рано копать так глубоко.

Я тебе зачеты и не сдаю.
Не вышел лицом.
...
Рейтинг: 0 / 0
01.11.2019, 13:20
    #39884239
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduчто делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и
2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть.
Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев.
avduВалерий ЮринскийЗачем и кому это нужно?Если вам это не нужно - не пишите сюда.
Мне - нужно. И именно на работе и по работе.
Все просто.Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят.
...
Рейтинг: 0 / 0
01.11.2019, 13:33
    #39884250
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
-2-avduчто делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут
1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и
2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть.
Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев.
Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят.

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

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

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

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

Ну что-ж, найдем, не впервой.
...
Рейтинг: 0 / 0
01.11.2019, 13:46
    #39884255
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduНу что-ж, найдем, не впервой.Валяй.
Только в следующий раз говори сразу, что ты д'артаньян, чтобы на тебя время не тратили.
...
Рейтинг: 0 / 0
01.11.2019, 13:49
    #39884258
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
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/

Потом расскажешь как это тебе помогло. :)
...
Рейтинг: 0 / 0
01.11.2019, 14:30
    #39884284
avdu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
Прошу всех, кому сказать нечего, не тратить свое время и не упражнять свое хамское красноречие.

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

Есть же еще на Руси великой и приличные люди?
...
Рейтинг: 0 / 0
01.11.2019, 14:42
    #39884288
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
...
Рейтинг: 0 / 0
01.11.2019, 14:51
    #39884292
Я и ёжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
В цепочке 'open - parse - bind - exec - fetch - close' при включенном и используемом bind пикинг на стадию Exec переходит построение плана запроса, поскольку на фазе parse еще нет данных о значениях bind.
Соответственно "Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные" и еще куча всего используемого при построении плана и рекурсивными запросами могут присутствовать.

Так же в трассировке с бинд переменными время вывода в трейс значений переменных так же попдает на стадию EXEC, отсюда на 12 уровне трассирвки при запросах с большим числом биндов можно видеть искажения когда для простого SELECT на EXEC начинает приходится большее время , чем на стадию FETCH.
...
Рейтинг: 0 / 0
01.11.2019, 15:05
    #39884301
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
avduВопрос возник в связи с тем, что один и тот же запрос в разное время или на разных данных/серверах БД,
в топе профиля ресурсов выдает то EXEC (CPU), то FETCH (CPU).вообще не в ту сторону копаете. Объяснить многие из тех, кто уже тут ответили могут легко, но видят, что вам это не нужно и не поможет.

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

Зыы. А не вы ли так яростно заявляли, что все и всегда надо трассировать с 10046?
...
Рейтинг: 0 / 0
01.11.2019, 15:25
    #39884317
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EXEC и FETCH курсора
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXEC и FETCH курсора / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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