AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.08.2013, 00:12   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
zakharov: Внедряем AX2009. Поиск "тяжелых" запросов используя Microsoft SQL Server Activity Monitor
Источник: http://www.zakharov.com/2013/08/ax20...-activity.html
==============



Источник: http://www.zakharov.com/2013/08/ax20...-activity.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
За это сообщение автора поблагодарили: trud (3), Logger (1).
Старый 22.08.2013, 09:29   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
о, наконец-то хоть кто-то этот способ описал.
Иван, появись в этой ветке, дай тебе спасибо сказать.
Старый 22.08.2013, 10:22   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
От себя замечу, что хотя способ и остроумный (я более длинным путем эту информацию получаю), но эвристический. Во первых - для сессии может быть более одного открытого курсора (и тогда надо будет по косвенным признакам искать более тяжелый из курсоров). Во вторых - у меня есть ужасное подозрение что система использует имена курсоров повторно для других запросов. Ну то есть - если ты видешь что у тебя в списке тяжелых запросов в sys.dm_exec_query_stats болтается запрос FETCH XYZ и ты видишь что у тебя в какой-то из сесии этот курсор используется для примитивного запроса select * from inventTable where itemId=%1, это не означает что сиквел сошел с ума и не может извлечь одну запись по кластерному ключу. Возможно вчера это же имя курсора использовалось для мегатяжелого запроса с 6 джойнами, а счас он просто повторно используется для простенького запроса. Во втором пункте я не уверен, но я точно видел несколько раз когда FETCH тяжелейшей исторической статистикой исполнения почему-то ссылался на простенький запросик...
За это сообщение автора поблагодарили: mazzy (2).
Старый 22.08.2013, 10:39   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Offtopic: вот все классно в этом блоге, кроме используемого движка. Какой-то он мега-тяжелый для MSIE10, не говоря уже про то, что blog bot сообщения не тянет.
За это сообщение автора поблагодарили: ziva (2).
Старый 22.08.2013, 10:49   #5  
ziva is offline
ziva
Иван Захаров
Злыдни
Лучший по профессии AXAWARD 2013
 
65 / 106 (4) +++++
Регистрация: 25.03.2005
Цитата:
Сообщение от fed Посмотреть сообщение
От себя замечу, что хотя способ и остроумный (я более длинным путем эту информацию получаю), но эвристический.
Поделишься своим методом? Если он более надежный, думаю многим будет полезен.

Цитата:
Сообщение от fed Посмотреть сообщение
Во вторых - у меня есть ужасное подозрение что система использует имена курсоров повторно для других запросов.
Повторное использование курсоров пока не замечал.
За это сообщение автора поблагодарили: mazzy (5), fed (5), trud (3), raz (5), sukhanchik (7), Lucky13 (5), gl00mie (3), madm (1).
Старый 22.08.2013, 11:18   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от ziva Посмотреть сообщение
Поделишься своим методом? Если он более надежный, думаю многим будет полезен.



Повторное использование курсоров пока не замечал.
Он тоже эвристический
На самом деле я примитивно вытаскиваю текущие исполняющиеся запросы по сессиям
пдообным запросом
X++:
select r.session_id,r.status,
 SUBSTRING(st.text, (r.statement_start_offset/2)+1, 
        ((CASE r.statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
         ELSE r.statement_end_offset
         END - r.statement_start_offset)/2) + 1) AS statement_text,
r.blocking_session_id,r.wait_type,r.wait_resource,r.wait_time,DB_NAME(r.database_id),r.cpu_time,r.logical_reads,r.reads,r.writes,r.start_time,r.sql_handle,r.plan_handle
from sys.dm_exec_requests  r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(r.plan_handle)as qp
where sql_handle is not null
Если я вижу что где-то исполняется тот самый fetch xyz из списка тяжелых запросов, я запоминаю номер сессии и вытаскиваю данные из той же таблицы открытых курсоров что и у тебя по номеру сессии.
Проблема в том, что зачастую очень тяжелый запрос из sys.dm_exec_query_stats приводит к вполне невинному запросику в sys.dm_exec_cursors, который в Management Studio исполняется со свистом и с очень разумным планом исполнения.
Я вижу возможных причины для этого:
  1. Повторное использование имен курсоров (о котором я уже писал)
  2. SQL Server в каких-то случаях использует принципиально разные планы исполнения для ситуаций, когда запрос открывается через обычный select и для ситуации когда для того же запроса используется серверный курсор.

А вообще, по моему не существует гарантированного и универсального способа замеппить Fetch в исходный текст запроса и посмотреть на план исполнения того самого исходного запроса... У меня была надежда что в SQL 2012 что-то сдвинулось на эту тему, но похоже что это не так...
За это сообщение автора поблагодарили: mazzy (5), raz (5), Logger (3), ziva (2), madm (1).
Теги
cursor, long query, performance, sql server, sql server activity monitor, тяжелые запросы

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Update Rollup 5 for Microsoft Dynamics CRM 2011 Blog bot Dynamics CRM: Blogs 2 27.10.2011 17:11
Event ID: 110 и Event ID: 117 Object Server 01: The database reported (session 1 (-AOS-)): [Microsoft][SQL Native Client]Communication link failure. The SQL statement was: "" Poleax DAX: Администрирование 0 18.05.2011 17:08
Ошибка бизнес-процесса Tarasov E Dynamics CRM: Разработка 9 18.02.2010 14:02
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
jinx: Microsoft Dynamics AX 2009, Windows Server 2008 und SQL Server 2008 Blog bot DAX auf Deutsch 0 12.10.2008 20:10
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.