|  | 
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Есть у меня db2 v11.1.4.5 Имею ситуацию в одной базе со многими lock wait а иногда и ескалацию. Ждут они Compiling a SQL statement их тоже много. Так вот собственно и вопрос как выявить почему Compiling a SQL statement идет очень долго? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 11:11 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Vladimir Mahrov Есть у меня db2 v11.1.4.5 Имею ситуацию в одной базе со многими lock wait а иногда и ескалацию. Ждут они Compiling a SQL statement их тоже много. Так вот собственно и вопрос как выявить почему Compiling a SQL statement идет очень долго? Посмотрите, кто реально кого ждёт: Код: powershell 1. Детали по каждому соединению: Код: powershell 1. <AppHandl> - номер из первой колонки результата по блокировкам. Посмотрите ещё тексты запросов и прочее для select * from TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-2)) с высокими/ненулевыми LOCK_WAITS, LOCK_WAIT_TIME. MON_GET_PKG_CACHE_STMT table function - Get package cache statement metrics Возможно потребуется сгруппировать по STMTID и просуммировать времена, если запросов много (например, если прилетает что без параметризации в большом количестве). Текст запроса тогда следует или вытащить отдельным запросом или взяв "любой из группы". ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 13:21 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ не совсем понятна ваша рекомендация. кто кого ждет я знаю, и что находится в compiling sql statment у меня не получается вытащить. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 13:41 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Vladimir Mahrov, Возможно я не очень понял, что вы пишете, и начал с шагов, которые вы уже прошли. Сompiling sql statement - может это "compil ed SQL statement" (те, что находятся в пакетах - скомпилированные процедуры, BINDed запросы из mbedded SQL)? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 13:53 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ я имею ввиду вот про это ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 14:21 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Ага, речь не про compiled, речь про "в стадии компиляции". Посмотрите, что там с этими апликациями. db2pd -alldbs -apinfo 207 db2pd -alldbs -apinfo 534 или более подробно: db2 get snapshot for application agentid 207 db2 get snapshot for application agentid 534 ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 22.09.2020, 15:07 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ И что мне даст эта информация? Как понять почему долго выполняется? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 24.09.2020, 09:12 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Vladimir Mahrov И что мне даст эта информация? Как понять почему долго выполняется? Может ничего не даст, может даст, может позволит оттолкнуться в дальнейших исследованиях от того, что "ничего не даст". Лично я бы сделал это первым шагом. Там вы можете обнаружить время начала последней операции (и, соответственно, оценить её продолжительность): Scope блокировок в общем случае (на высоких уровнях изоляции или когда у вас произошла эскалация блокировок) - в пределах транзакции, другое соединение может ждать завершения _транзакции_ в первом. В то время как первое - ничтоже сумняшеся может продолжать какую-то свою долгую работу. Например , обновлять что-то там в базе через большое количество мелких запросов. Если запросы непараметризованы, то время компиляции может быть существенно больше времени выполнения, и в db2top вы будете видеть только это состояние (и ошибочно решите, что это долго компилируется один запрос). Можете обнаружить время начала транзакции и соотнести с временем перехода в состояние блокировки второго приложения. Можете увидеть текст запроса и а) оценить, что с ним вообще может происходить б) посмотреть по содержимому кэша запросов статистику, сколько он реально компилировался (и прочие времена) в) попробовать скомпилировать этот запрос самостоятельно (prepare ..., explain plan for ...). И т.д. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 24.09.2020, 13:01 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Спасибо! ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 24.09.2020, 17:45 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Vladimir Mahrov, Навряд ли вы сами разберетесь, почему запрос долго компилируется. Это особенности оптимизатора, и как он там внутри чего и почему делает - вы не сможете понять. Это надо запрос в поддержку отправлять. Они там, наверное, смогут проанализировать трассировку вашего приложения (результат db2trc) и сказать, на что там время и ресурсы тратятся. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 25.09.2020, 12:42 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Mark Barinstein Vladimir Mahrov, Навряд ли вы сами разберетесь, почему запрос долго компилируется. Это особенности оптимизатора, и как он там внутри чего и почему делает - вы не сможете понять. Это надо запрос в поддержку отправлять. Они там, наверное, смогут проанализировать трассировку вашего приложения (результат db2trc) и сказать, на что там время и ресурсы тратятся. А подскажете как сделать трасировку лучше? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 02.10.2020, 16:04 |  | ||
| 
Как выявить причину очень долгих Compiling a SQL statement? | |||
|---|---|---|---|
| #18+ Vladimir Mahrov А подскажете как сделать трасировку лучше? Для вас эта информация не будет иметь смысла, т.к. непонятно, что с ней делать. Всё, что вы можете сами сделать тут, это как-то переписать запрос, чтобы его компиляция не занимала столько времени. Еще, может, посмотрите на размер кэша запросов (PCKCACHESZ). Если он сильно разросся, то зафиксируйте его размер жестко в разумное значение или посмотрите, почему это происходит (как правило - одинаковые запросы с константами вместо параметров?). ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 02.10.2020, 17:16 |  | ||
|  | 

| start [/forum/topic.php?fid=43&msg=40004955&tid=1600167]: | 0ms | 
| get settings: | 12ms | 
| get forum list: | 14ms | 
| check forum access: | 4ms | 
| check topic access: | 4ms | 
| track hit: | 27ms | 
| get topic data: | 9ms | 
| get forum data: | 2ms | 
| get page messages: | 49ms | 
| get tp. blocked users: | 2ms | 
| others: | 246ms | 
| total: | 369ms | 

| 0 / 0 | 
