powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
69 сообщений из 69, показаны все 3 страниц
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565012
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Query:
Код: plaintext
select * from get_realization( . . . );

Вывод в 2.5:
Код: plaintext
PLAN JOIN (GET_REALIZATION NATURAL, D INDEX (RDB$PRIMARY5))(REF ORDER REF_XNAME INDEX (REF_K1))(REF ORDER REF_XNAME INDEX (REF_K2))

Вывод в 3.0:
Код: plaintext
PLAN (GET_REALIZATION NATURAL)

В итоге непонятно:
1) как там внутри соединялись таблицы, был ли там натурал или нет;
2) невозможно составить список используемых и по нему - НЕ используемых индексов, если вытряхнуть все ХП в список и вызовать их через execute statement с предварительным set planonly.

Так что сабж! Ну, или в кр. случае - параметр конфига какой-нить надо для "обратной совместимости".
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565016
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ты неправ. План как раз верный в FB3. Другое дело как узнать что там произошло в ХП. Может быть в расширенном плане где нибудь раскрывать внутренности планирования запросов ХП? Причём отдельно от основного плана
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565057
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВ итоге непонятно:
и не надо. в 2.5 план процедуры это план всех sql-запросов в тексте процедуры, безусловно. Поэтому plan natural - это абсолютно верно.
Особенно для планов запросов с вызовами процедур.

Симонов ДенисМожет быть в расширенном плане где нибудь раскрывать внутренности планирования запросов ХП?
зачем? исключительно ради интереса? не показывая, что половина планов от запросов, которые НЕ выполнялись при конкретном вызове процедуры?
План же для запросов процедуры строится при первом вызове процедуры, и торчит таким всегда независимо от ветвления процедуры, или даже если ни один запрос внутри не выполнялся. Это же "черный ящик".
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565059
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще может быть стоит упомянуть о том, что буфер для плана ограничен, и по крайней мере раньше не всегда сумма всех планов влезала в "план процедуры".
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565060
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
план - это вещь, относящаяся к запросу . Если в ХП несколько запросов, никакого плана у нее быть не может, может быть лишь слепленная вместе каша мала. Если эта каша мала процедура снаружи еще и джойнится к чему-нибудь, то вообще ахтунг.

список используемых/неиспользуемых индексов составлять лишь по ХП - фигня, ибо есть еще триггеры, функции и клиентские запросы. Для этого должны быть другие средства - мониторинг, трассировка и т.п.

возможность посмотреть список планов внутренностей процедуры быть должна, но к плану вызова процедуры это не имеет никакого отношения. Как это будет сделано - пока не решил, можете предлагать свои варианты.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565066
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrКак это будет сделано - пока не решил, можете предлагать свои варианты.
сомневаюсь. когда мы вызываем get_realization, и видим тучу планов, мы не имеем понятия, к каким запросам эти планы относятся, и какие запросы выполнялись, а какие - нет.
Обычно план мы видим для конкретного запроса. А в отношении процедуры - сопоставить планы с текстами запросов можно только глядя в текст процедуры. Облом.
Так что даже если сделать в ISQL нечто вроде EXPLAIN PROC_NAME, то без текста процедуры это будет непонятно что. Особенно, если текст процедуры удален :-) (ха-ха).
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565068
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrсписок используемых/неиспользуемых индексов составлять лишь по ХП - фигня, ибо есть еще триггеры, функции и клиентские запросы. Для этого должны быть другие средства - мониторинг, трассировка и т.п.Чтобы найти НЕ используемые индексы, надо врубать трассировку весьма надолго. Не айс, ибо юзера почуют и орать начнут.
dimitrвозможность посмотреть список планов внутренностей процедуры быть должна, но к плану вызова процедуры это не имеет никакого отношения. Как это будет сделано - пока не решил, можете предлагать свои варианты.1) отдельная команда в isql: set detailed_plan on
2) какой-то ключик в трейсе всё-таки добавить, тоже что-то вроде log_detailed_plan true
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565070
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и еще - IBExpert, когда показывает планы для процедуры, он парсит ее текст, препарит запросы, и выводит план для конкретного запроса. Естественно, что никакими "планами процедуры" он не пользуется.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565075
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvв отношении процедуры - сопоставить планы с текстами запросов можно только глядя в текст процедуры.Трассировка не всегда катит (см выше). Нужны еще методы для отлова "тормозных колодок". Я в свое время нарыл элементарный - вывод планов через execute statement.
Да, триггеры есть еще и запросы с клиента, но:
1) в триггерах ЧАЩЕ всего код не такой ресурсоемкий
2) затраты именно на триггера легко отловить трейсом, установив только log_trigger_finish true
3) все запросы, зашитые в клиенте, у нас вытряхиваются и на них также можно натравить set planonly. Однако, львиная доля их - это просто вызовы ХПшек.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565076
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

согласен для конкретного запроса планы внутренних запросов процедуры отображать не надо. А для того чтобы узнать что там напланировалось внутри процедуры можно ввести спец таблицу мониторинга, где будут отображаться все ХП загруженные в кэш метаданных, отдельным BLOB столбцом можно сделать как раз планы всех внутренних запросов.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565084
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvвидим тучу планов, мы не имеем понятия, к каким запросам эти планы относятся, и
какие запросы выполнялись, а какие - нет.
Поэтому у Оракула, например, есть два плана: один "типа план" после prepare и "в натуре
план" после execute. Во втором и расписано как что выполнялось, со статистиками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565091
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЧтобы найти НЕ используемые индексы, надо врубать трассировку весьма надолго.

А по поводу трассировки у меня есть хотелка, чтобы её можно было запускать прямо из isql сразу с фильтром на свою сессию. И чтобы можно было выводить из неё статистику и др. вещи после каждого оператора, транзакции, по требованию опциально. А то сейчас в супере при многопользовательском режиме в статистике видим фетчи по всем коннектам.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565097
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисповоду трассировки у меня есть хотелка, чтобы её можно было запускать прямо из isql сразу с фильтром на свою сессию.ты в трекер занёс это ?
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565100
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

нет. Сначала надо обсудить. Выслушать мнения. А вот когда идея полностью созреет можно и в трекер. К тому же если Светила скажут громкое НЕТ, то и смысла в этой хотелке тоже не будет.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565186
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА для того чтобы узнать что там напланировалось внутри процедуры можно ввести спец таблицу мониторинга, где будут отображаться все ХП загруженные в кэш метаданных, отдельным BLOB столбцом можно сделать как раз планы всех внутренних запросов.
одни блобом кучу планов (тем более если детализированных) - это как-то некомильфо. Была мысль отдельной таблицей выводить все курсоры данного стейтмента (юзерского или кешированной процедуры), соответственно у каждого курсора свой план (блоб). Но тут надо подумать, что еще имеет смысл выводить для курсоров, только ради планов такой огород нет смысла городить...
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565490
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

для курсоров можно ещё выводить сколько записей отфетчено, тип курсора (он ведь теперь ещё и двунаправленный может быть), состояние курсора (активный и неактивный), ну и поле для привязки его к оператору и статистике (по памяти и диску)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565692
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Число записей - запросто, ссылка на стейтмент - само собой. Но боюсь, что вести полную статистику для каждого курсора будет слишком затратно. С типом курсора проще, но там тоже есть один неочевидный момент. Буду еще думать.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565772
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

ладно от статистики можно отказаться. Я ещё один момент забыл. Должна быть ссылка на таблицу значений параметров курсора и для стейтмента тоже. По поводу второго вроде даже тикет в трекере есть.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565799
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

у курсора нет параметров. Вернее, для них параметром может быть почти все - и входной параметр процедура, и локальная переменная, и даже поле вышестоящего курсора. Так загоняться нет смысла...
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565985
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrбоюсь, что вести полную статистику для каждого курсора будет слишком затратно.Когда идёт поиск узких мест, то чем больше инфы, тем лучше. Зачем убирать статистику ? Можно ведь трассировать не всех, а только себя любимого, когда сидишь и моделируешь д-вия юзеров.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38565993
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

не путай мониторинг и трассировку
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566062
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrбоюсь, что вести полную статистику для каждого курсора будет слишком
затратно.
Дерево выполнения запроса на процедуру только ссылается или копирует её дерево в себя?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566080
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

только ссылается
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566086
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrтолько ссылается
Не для тройки идея, но - насколько затратнее будет копировать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566139
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Dimitry Sibiryakov]Не для тройки идея, но - насколько затратнее будет копировать?/quot]
реализовать это будет точно совсем не просто. Но главное - зачем?
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566180
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrреализовать это будет точно совсем не просто. Но главное - зачем?
Каждая нода сможет накапливать в себе статистики своего выполнения для конкретного запроса
самостоятельно и по запросу формировать свой кусочек плана с выдачей этих статистик.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566193
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

накапливает она и сейчас. Ибо на самом деле дерево выполнения ссылается на копию процедуры. Каждое дерево имеет свою копию, каждая копия имеет свои счетчики статистики. Проблема не в этом, а в том, что сейчас самый низкий уровень накопления статистики - риквест, копить ее еще ниже (на уровне курсора или ноды) - может выйти очень дорого, ибо таких элементов тупо в разы больше.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrкопить ее еще ниже (на уровне курсора или ноды) - может выйти очень дорого,
ибо таких элементов тупо в разы больше.
Но и статистики там могут быть попроще: количество записей обработанных, подпавших под
условие или отвергнутых, количество вообще обращений к ноде, входное условие (если было
одно) и т.п. Большинство из этого - простые инкременты, делающиеся за один такт.

На их основе могут делаться выводы об эффективности условий, их цены и т.п.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38566225
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

тогда не надо статистику пока. Ибо лишние тормоза не к чему. Достаточно и вот этого:

- id курсора
- ссылка на стейтмент
- текст запроса курсора
- план (explain)
- тип курсора (однонаправленный или двунаправленный)
- количество отфетченных записей (для двунаправленных наверное равняется общему кол-ву)
- текущий номер записи (для двунаправленных это может быть полезно)
- состояние курсора (активен или нет, правда я не знаю может быть как только курсор не активен он тут же пропадает)
- используется ли блокировка (FOR UPDATE WITH LOCK)

Тут ещё возникает ситуация когда один курсор крутится внутри другого можно ещё и дать ссылку на "родительский" курсор
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567027
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати. Раз уж тут разговор зашёл о мониторинге всех курсоров в том числе и тех что выполняются внутри ХП. То может и в трассировку такую информацию добавить и вот там уже выводить полную статистику?
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567060
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

пока разговор идет лишь о том, надо ли такое вообще
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567076
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

пока против вроде никто не высказался.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567084
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспока против вроде никто не высказался
если это никому не надо, то и не выскажутся :-)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567532
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,
учитывая, что сейчас нет ни каких средств отладки/оптимизации SP, я думаю, что любые средства в этом направлении нужны всем
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38567552
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhin,

это точно нельзя отнести к отладке, даже насчет оптимизации я не уверен (без статистики, по крайней мере)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38687190
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrБыла мысль отдельной таблицей выводить все курсоры данного стейтмента (юзерского или кешированной процедуры), соответственно у каждого курсора свой план (блоб). Но тут надо подумать, что еще имеет смысл выводить для курсоров, только ради планов такой огород нет смысла городить...
. . .
боюсь, что вести полную статистику для каждого курсора будет слишком затратно
. . .
Проблема не в этом, а в том, что сейчас самый низкий уровень накопления статистики - риквест, копить ее еще ниже (на уровне курсора или ноды) - может выйти очень дорого, ибо таких элементов тупо в разы больше. Up!!

Три "счастливых" дня
было у меня,
было у меня с трейсОм" (почти (С)).

Я поднимаю тему, т.к. напоролся по полной программе на то, что один из стейтментов (inner join двух таблиц) в некоторой ХП время от времени выполнял natural-сканы большой таблицы.
Причём делалось это не стабильно, а только когда статистика по индексам:
1) отсутствовала (т.е. на старте, когда база только что залита)
2) устаревала до какой-то степени, что в итоге приводило оптимизатор к неверному плану.

И что бы понять, в где именно внутри ХП поменялся план, пришлось танцевать с бубном трое суток
Доводы о том, что накапливать планы по каждому курсору слишком затратно, выглядят для мну теперь... как бы это помягче сказать... ладно, не буду - сами догадаетесь.
У каждой группы разрабов всегда есть более-менее актуальная копия продакшена на отдельном хосте. Когда кто-то из них запускает трейс с установкой connect_id = <my_connect_id>, то даже при всех включённых опциях это мало повлияет на работу его коллег-разрабов (а не усеров! те вообще про это не узнают).
Я совершенно не понимаю, как можно в нынешнем 3.х (в отличие от 2.х!) вести поиск проблемных мест в ХП, состоящей из нескольких отдельных стейтментов, каждый из которых в свою очередь вызывает другие ХП - и там тоже по несколшьку отдельных стейтментов, и т.д.

2 dimitr, hvlad: добавьте хотя бы в трейс ключик, позволяющий вываливать в лог все генерируемые планы! Если еще и статистику по отдельным стейтментам внутри ХП/функций/триггеров сделаете - будет вообще супер.

PS. Идея "отдельной таблицей выводить все курсоры данного стейтмента" - настораживает: это что, опять mon$-таблица будет ? Если да, то... может не надо, а ?... ;-Q

PPS. Кстати: тикет в трекере есть на эту тему ?
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38687204
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЕсли еще и статистику по отдельным стейтментам внутри ХП/функций/триггеров сделаете - будет вообще суперДа, именно так.
Потому что как иначе понять, на что ушли 68 сек вот тута:
Код: plaintext
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.
2014-07-03T19:03:48.5980 (6599:0x7f10c15a9228) EXECUTE_STATEMENT_FINISH
        oltp30 (ATT_166, SYSDBA:NONE, NONE, TCPv4:192.168.43.62)
        C:\1INSTALL\FB25SNAP\bin\isql.exe:1696
                (TRA_293036, CONCURRENCY | NOWAIT | READ_WRITE)

Statement 774851:
-------------------------------------------------------------------------------
execute block returns( invoice_id bigint, total_lines int, total_invoice_qty int, total_invoice_purchase numeric(12,2) )
as begin
    if ( exists( select * from v_qdistr_ord_sup ) ) then
    begin
      select
         min(p.doc_list_id) stock_order_id,
         count(*) total_lines,
         sum(p.qty) total_invoice_qty,
         sum(p.purchase) total_invoice_purchase
      from sp_supplier_invoice p 
      into invoice_id, total_lines, total_invoice_qty, total_invoice_purchase;
      suspend;
   end
end
1 records fetched
  67529 ms, 264 write(s), 67487 fetch(es), 6653 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$DATABASE                            2
RDB$INDICES                                       1
TMP$SHOPPING_CART                      12         1         1        11
TMP$RESULT_SET                        765                           255
Z_USED_VIEWS                                     13
OPTYPES                                          27
RULES_FOR_QDISTR                       91        11
DOC_LIST                                         23        11         1
DOC_DATA                                       2904                  11
QDISTR                                         1592       535       255       255                           122
QSTORNED                                        255       255       255
DOC_STATES                                        1
INVNT_TURNOVER_LOG                               13                  11
PERF_LOG                                          3         3         3
(знаю, надоел я уже с этим вопросом; но уж очень печалька сильная сейчас из-за всего этого...)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38712931
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подниму тему:

Симонов ДенисДостаточно и вот этого:

- id курсора
- ссылка на стейтмент
- текст запроса курсора
- план (explain)
- тип курсора (однонаправленный или двунаправленный)
- количество отфетченных записей (для двунаправленных наверное равняется общему кол-ву)
- текущий номер записи (для двунаправленных это может быть полезно)
- состояние курсора (активен или нет, правда я не знаю может быть как только курсор не активен он тут же пропадает)
тут возникает две проблемы, маленькая и большая:

1) Курсор с т.з движка это не то же самое, что с т.з. пользователя. В частности, подзапросы являются курсорами. Это можно видеть в планах любой версии ФБ - отдельная строчка PLAN на каждый подзапрос. Выводить в мониторинге подзапросы как курсоры - сильно не красиво. Можно попробовать в движке их как-то разделить, но что-то мне кажется это невозможным в общем случае - например, IF (A = (SELECT ... )) THEN - это курсор или нет? Если да, то почему WHERE EXISTS (SELECT ....) это не курсор?

2) Для внутренностей PSQL у нас нет текстов запросов. В лучшем случае, если все карты легли удачно - есть исходный текст всей процедуры и номер строки/столбца внутри нее. Но может и этого не быть. Как в итоге идентифицировать курсоры внутри mon$cursors - непонятно. Имя курсора можно выводить, но в подавляющем большинстве случаев оно отсутствует. Можно пытаться разобраться по планам, но это изврат.

Что-то мне сильно не хочется делать бесполезную фичу, несмотря на первоначальную привлекательность :-(
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38712958
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

да уж печально.

Если ещё по первому пункту можно надеется что в будущих версиях часть подзапросов внутри SELECTов можно будет преобразовать в полу джойны, то по второму и сказать нечего.

Можно в мониторинге хотя бы агрегированную статистику по курсорам показывать (сколько активно в данный момент, сколько всего было открыто)? Хотя полезность этой информации гораздо ниже.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38712963
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

а ещё можно для запросов показывать сколько он контекстов задействовал, а то их расчёт не очевиден.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38712995
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисможно надеется что в будущих версиях часть подзапросов внутри SELECTов можно будет преобразовать в полу джойны
это далеко не все случаи подзапросов, самый проблемный - select (select ...) ...

Симонов ДенисМожно в мониторинге хотя бы агрегированную статистику по курсорам показывать (сколько активно в данный момент, сколько всего было открыто)?
пока не вижу в этом практического смысла

Симонов Дениса ещё можно для запросов показывать сколько он контекстов задействовал, а то их расчёт не очевиден
тоже не вижу смысла. Подгонять текст запроса под лимит - ущербная практика, проще сразу делить его на части и выносить их в процедуры.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713049
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> самый проблемный - select (select ...) ...

А почему он проблемный, если не секрет?
С т.з. отображения можно было бы и вполне
понятно/удобно было бы рассматривать его
как два "курсора" (в твоих терминах).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713058
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

dimitr наверное имел ввиду, что его в полуджойн не преобразовать. А если рассматривать как курсор, то он ведь будет открыт столько раз сколько записей в запросе верхнего уровня
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713077
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА почему он проблемный, если не секрет?
во-первых, его никак не преобразуешь. Во-вторых, внутри движка нет понятия "select list". Данный подзапрос будет подставлен как выражение там, где идет обращение к нему по имени. И привязать его к "родительскому" курсору может быть затруднительно.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713080
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> он ведь будет открыт столько раз сколько записей в запросе верхнего уровня

С какой стати? Пусть будут два некореллированный/материализованный курсор.
Или просто два независимых, если некореллированный трудно отобразить.

Впрочем, даже после объяснения ДЕ я нихрена не понял, в чём проблема, так что ХЗ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713090
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамС какой стати? Пусть будут два некореллированный/материализованный курсор.
Или просто два независимых, если некореллированный трудно отобразить.

а статистику то по ним как выводить? При выполнении на самом деле это каждый раз новый курсор на новую запись.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713096
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДостаточно и вот этого:
. . .
- ссылка на стейтмент
. . .
- план (explain)+1!

SP всё равно состоит из отдельных стейтментов, какие бы сложные они там не были.
Необходимо показывать план и статистику с точностью всего лишь до отдельного стейтмента , более детально - сколько и чего там делают его отдельные подзапросы, типа where exists(select * from . . .), - не нужно, перетопчемся.
Почему-то fbclient.dll при возникновении ошибки в N-ом стейтменте (если она не перехватывается when-блоком и далее не пробрасывается exception'ом) может точно показать номер строки + столба, где это случилось. Неужели нельзя вытряхивать такую же инфу (номер строки + столба) в трейс, без всякой там доп. идентификации стейтмента ?
Т.е. просто показывать что-то типа этого:
Код: plaintext
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.
2014-08-04T13:47:40.1200 (18377:0x7f3ca4739300) EXECUTE_ SINGLE _STATEMENT_FINISH
        oltp30 (ATT_1834, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:2332
                (TRA_161283, CONCURRENCY | WAIT | READ_WRITE)

 Unit: MY_POOR_PROCEDURE, row: 150, col: 10 
-------------------------------------------------------------------------------
select count(*) from tsour into n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Select Expression
    -> Table "TSOUR" Full Scan
0 records fetched
 12518 ms, 109217 read(s), 15802049 fetch(es)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
TSOUR                             4999850


. . . . . . . .

2014-08-04T13:47:52.1360 (18377:0x7f3ca4739300) EXECUTE_ SINGLE _STATEMENT_FINISH
        oltp30 (ATT_1834, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:2332
                (TRA_161283, CONCURRENCY | WAIT | READ_WRITE)

 Unit: MY_POOR_PROCEDURE, row: 156, col: 10 
-------------------------------------------------------------------------------
insert into ttarg(id, s01) select id, s01 from tsour
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Select Expression
    -> Table "TSOUR" Full Scan
0 records fetched
 15418 ms, 1217 read(s), 217255 write(s), 158022049 fetch(es), 35807862 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
TSOUR                             4999850
TTARG                                                           4999849             4999849
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713098
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> а статистику то по ним как выводить?

Так со статистикой и щас вроде нет проблем или как?

> При выполнении на самом деле это каждый раз новый курсор на новую запись.

Не понял. В простом случае при выполнении реально всего
один курсор. В сложных случаях возможны варианты, наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713129
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНеужели нельзя вытряхивать такую же инфу (номер строки + столба) в трейс, без всякой там доп. идентификации стейтмента ?
Т.е. просто показывать что-то типа этого :
ты сам себе противоречишь. Как выводить стейтмент, если нет исходников процедуры? Что выводить на месте стейтмента, если на заданной строке стоит одно лишь слово select? Парсить до ближайшей точки с запятой? Чтобы трейс еще сильнее тормозил?
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713145
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrКак выводить стейтмент, если нет исходников процедуры?Хм... А куда они делись ? Если их разраб приложения грохнул, то проблема индейцев, чего её тут обсуждать ?

dimitrЧто выводить на месте стейтмента, если на заданной строке стоит одно лишь слово select? Парсить до ближайшей точки с запятой? Чтобы трейс еще сильнее тормозил?Трейс и сейчас выполняет вывод кода стейтмента, который может быть достаточно длинным - и ничего, не помер никто.
Но даже если опасаться тормозов от парсинга, то вывод всего лишь "координат" (номера строки и столба) - и того достаточно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
2014-08-04T13:47:40.1200 (18377:0x7f3ca4739300) EXECUTE_ SINGLE _STATEMENT_FINISH
        oltp30 (ATT_1834, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:2332
                (TRA_161283, CONCURRENCY | WAIT | READ_WRITE)
 Unit: MY_POOR_PROCEDURE, row: 150, col: 10 
select count(*) from tsour into n
Select Expression
    -> Table "TSOUR" Full Scan
0 records fetched
 12518 ms, 109217 read(s), 15802049 fetch(es)
Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
TSOUR                             4999850

PS. А еще я бы выкинул к ЧМ все эти "^^^^^^^^^^^^^^^^^^^" и "***********************". Уж от них-то точно никакой пользы, вывод только засоряют.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713154
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> PS. А еще я бы выкинул к ЧМ все эти
Таблоид> Уж от них-то точно никакой пользы, вывод только засоряют.

Это да, +1, меня тоже раздражали.
Одного разделителя между записями было бы достаточно,
а между секциями можно было бы пустую строку выводить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713173
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидPS. А еще я бы выкинул к ЧМ все эти "^^^^^^^^^^^^^^^^^^^" и "***********************". Уж от них-то точно никакой пользы, вывод только засоряют.

я бы так не сказал. Для инструментов которые парсят лог трассировки это может быть очень полезным.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713194
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДля инструментов которые парсят лог трассировки это может быть очень полезным.Ну, может и так. Хотя надёжнее было бы не выводить эти каретки и звёздочки, а прямо давать заголовки перед секциями: {PLAN}, {STAT} etc.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713240
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоиддавать заголовки перед секциями: {PLAN}, {STAT} etc.
даешь вывод в xml или даже в json!
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713254
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrдаешь вывод в xml или даже в json!кста... А для чего у fb_lock_print ключик '-m', если так тормоза страшны ? ведь fb_lock_print - он ведь посильнее заклинит, чем трейс, он же всех останавливает, пока "делается"...
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713259
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидведь fb_lock_print - он ведь посильнее заклинит, чем трейс, он же всех останавливает, пока "делается"...
во-первых, "клинит" он только обращения к лок-таблице, которых в супере, например - кот наплакал. Во вторых, ключик -c можно и не указывать. Ну и в третьих, fb_lock_print запускается по необходимости, а аудит может молотить постоянно.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713297
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrключик -c можно и не указывать.Можно. Но не нужно . И это еще безобидный пример: у мну один раз пропуск этого ключика привёл (в ответ на fb_lock_print -a) к созданию файлика размером более 15 Гб - это еще на продакшене под 2.5.1 было.

dimitrаудит может молотить постоянно.Кому нужно огрести тормоза на ровном месте - пущай включает аудит (вместо user-трейса). Это будут пасмурные дни для него. Но по-любому, если выкинуть "^^^^^^^^^^^^" и добавить просто "якорный тег" типа {PLAN} - уже экономия вывода будет.
PS. Жаль, конечно, товарища Thomas Steinmauer'a, он наверняка на "^^^^^^^^^^^" большие надежды имеет...
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713309
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоиддавать заголовки перед секциями: {PLAN}, {STAT} etc.
даешь вывод в xml или даже в json!
Слишком просто будет распарсить трэйс :)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713312
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидPS. Жаль, конечно, товарища Thomas Steinmauer'a, он наверняка на "^^^^^^^^^^^" большие надежды имеет...
Можно сделать конфигурируемый вывод: plain, xml, json.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713315
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто хочет определённый формат вывода - пишет свой трейс-плагин и выводит всё так как хочет
и куда хочет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713347
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКто хочет определённый формат вывода - пишет свой трейс-плагин и выводит всё так как хочет
и куда хочет.

А сделать сразу удобно, типа как для себя любимого? :)
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713363
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКто хочет определённый формат вывода - пишет свой трейс-плагин и выводит всё так как хочет
и куда хочет.Да хрен с ним, форматом вывода. Сейчас сам вывод не содержит того, чего позарез надо
Сижу тут, извратом занимаюсь: чтобы оценить, "скока время" уходит на какой-нить подозрительный стейтмент внутри ХП (один из нескольких), запихиваю его в строку, параметризую и делаю [for] execute statement (v_stt) (. . .) into . . . - лишь бы он в трейсе показался со статистикой. В аптеку за йадом скоро побегу...
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713366
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

и чем же json или xml удобнее? И тот и другой для чтения человеком без специальных инструментов неудобен.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713550
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКто хочет определённый формат вывода - пишет свой Пишет свою СУБД, ага. Ты бы перестал каждый раз эту глупость нести.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713560
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТы бы перестал каждый раз эту глупость нести.
Я? Ты на полном серьёзе утверждаешь, что это я изобрёл и внедрил систему плагинов в
Firebird?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713568
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, конечно. Но и писать одну и ту же хрень каждый раз не надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713846
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНет, конечно. Но и писать одну и ту же хрень каждый раз не надо.

То есть ты считаешь, что система плагинов - хрень и никто никогда не должен написать ни
одного стороннего плагина?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713870
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плагины штука хорошая. Но из всех типов плагинов для разработчиков информационных систем интересны только UDR и может быть плагин шифрования. Плагины трейса могут разрабатывать производители административных утилит. А остальные плагины это уже внутренняя кухня, скорее облегчают работу разработчикам FB и его клонов.
...
Рейтинг: 0 / 0
ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
    #38713983
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> То есть ты считаешь

Я сказал то, что сказал и договаривать вместо меня не надо.
90% про плагины и пр. не знают, 99% не захотят и тем более
не смогут написать свой плагин. Поэтому если бы ДЕ/Влад
отмазывались фразой "пишите свой плагин" - это ещё как-то
объяснимо, а остальным без нужды не стоит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
69 сообщений из 69, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ФБ 3.0: при вызове ХП перестал показывать нормальный план. Требую вернуть взад!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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