|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
Друзья, столкнулся с такой задачей - где найти подробное описание действий, которые делаются с курсором во время операций 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. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 10:01 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
Вот тут подробней: https://habr.com/ru/post/429946/ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 10:28 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
Synoptic, ну ты тролль ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 10:34 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduИ - в качестве бонуса - UPDATE & INSERT.Давай ты сам сперва выскажешь своё предположение, что же в таких случаях "делает оный во время FETCH?" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 11:13 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
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 и сделать наглядное пособие. Как в анатомии. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 12:33 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduХотелось бы препарировать EXEC и FETCH и сделать наглядное пособие. Как в анатомии.Зачем и кому это нужно? Много свободного времени на работе? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:02 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduЗдесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идутЗачёт не сдан. Тебе, неуч, рано копать так глубоко. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:12 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
Валерий ЮринскийavduХотелось бы препарировать EXEC и FETCH и сделать наглядное пособие. Как в анатомии.Зачем и кому это нужно? Много свободного времени на работе? Если вам это не нужно - не пишите сюда. Мне - нужно. И именно на работе и по работе. Все просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:18 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
ElicavduЗдесь проще - то, что делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идутЗачёт не сдан. Тебе, неуч, рано копать так глубоко. Я тебе зачеты и не сдаю. Не вышел лицом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:19 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduчто делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут 1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и 2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть. Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев. avduВалерий ЮринскийЗачем и кому это нужно?Если вам это не нужно - не пишите сюда. Мне - нужно. И именно на работе и по работе. Все просто.Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:20 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
-2-avduчто делает FETCH видно из файла трассировки - в рамках вызова FETCH (перед ним) идут 1. Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные (scattered read, etc) и 2. Пересылка туда-сюда по сети (SQL*Net message to/from client) - тоже, в общем-то, к ОС.Выводы ни о чем. Во-первых, и без трассировки очевидно, что при фетче могут быть и физические чтения (еще и логические!), и передача по сети. А могут и не быть. Во-вторых, не все фетчи одинаковы, а уж с точки зрения клиента наворачивается еще куча слоев. Расскажи, в чем нужность, если вопрос получится менее бестолковым, ответят. Очень видно (очевидно) - это где? Для красного словца? Я намеренно упростил ответ - очевидно!!! бывает по разному. В начальном посту я написал, для чего это нужно. Очевидно!!!, придется искать самому. Тем более мне-то ясно, для чего это нужно. Ну что-ж, найдем, не впервой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:33 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduНу что-ж, найдем, не впервой.Валяй. Только в следующий раз говори сразу, что ты д'артаньян, чтобы на тебя время не тратили. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:46 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
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/ Потом расскажешь как это тебе помогло. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 13:49 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
Прошу всех, кому сказать нечего, не тратить свое время и не упражнять свое хамское красноречие. Займитесь делом более полезным, не отвлекайтесь на то, что кажется вам глупым и вас недостойным. Есть же еще на Руси великой и приличные люди? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 14:30 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
В цепочке 'open - parse - bind - exec - fetch - close' при включенном и используемом bind пикинг на стадию Exec переходит построение плана запроса, поскольку на фазе parse еще нет данных о значениях bind. Соответственно "Запросы к ОС на чтение вида WAIT nam='db file sequential read' и прочие подобные" и еще куча всего используемого при построении плана и рекурсивными запросами могут присутствовать. Так же в трассировке с бинд переменными время вывода в трейс значений переменных так же попдает на стадию EXEC, отсюда на 12 уровне трассирвки при запросах с большим числом биндов можно видеть искажения когда для простого SELECT на EXEC начинает приходится большее время , чем на стадию FETCH. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 14:51 |
|
EXEC и FETCH курсора
|
|||
---|---|---|---|
#18+
avduВопрос возник в связи с тем, что один и тот же запрос в разное время или на разных данных/серверах БД, в топе профиля ресурсов выдает то EXEC (CPU), то FETCH (CPU).вообще не в ту сторону копаете. Объяснить многие из тех, кто уже тут ответили могут легко, но видят, что вам это не нужно и не поможет. Зы. И не надо тут так воинственно спорить. Хотя бы немного стоит подумать, если несколько человек уже указали на странность вопроса. Зыы. А не вы ли так яростно заявляли, что все и всегда надо трассировать с 10046? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 15:05 |
|
|
start [/forum/topic.php?fid=52&msg=39884049&tid=1881916]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
31ms |
get forum data: |
10ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 438ms |
0 / 0 |