Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Здравствуйте!

Необычная просьба :)

Пишу презенташку по оптимизации запросов

Нужны яркие примеры для демонстрации

Если у кого то завалялись любые сохраненные планы плохих запросов, пришлите пожалуйста!

Если сохранился текст запроса и есть пара комментов к нему, будет хорошо, но если нет - не критично

Если есть "до" и "после", то будет совсем сказка :)

Если текста не сохранилось, до и после не сохранилось - шлите as is !!!

Заранее спасибо!

PS Можно все выкладывать сюда или слать на velifer .. yandex .. ru
21 июн 15, 13:06    [17799105]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
up
22 июн 15, 00:09    [17800291]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
Плохие планы запросов достаточно легко создавать при помощи хинтов.
Искать "яркие" планы запросов это, конечно, здорово, но что с ними потом делать?
Оптимизировать? Без данных?
22 июн 15, 00:41    [17800336]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Oleksii Kovalov,

Мне нужно исключительно для демонстрации, и времени в обрез, просто нет времени на эксперименты
22 июн 15, 01:58    [17800431]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Aramis
просто нет времени на эксперименты
Может тогда не стоит и презентацию делать?

ЗЫ: найдите любой доклад на тему оптимизации запросов или оценки кардиналити, там точно будут такие примеры. Например тут: https://www.youtube.com/user/russianvc
22 июн 15, 05:10    [17800464]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
Aramis
Oleksii Kovalov,

Мне нужно исключительно для демонстрации, и времени в обрез, просто нет времени на эксперименты


Вообще говоря, существует всего 3 основных случая проблем с планами запросов
1) используется неправильний индекс или индекс не используется вообще - with(index=0/n)
2) используется неправильний порядок объединения таблиц - option(force order) / inner [loop|hash|merge] join
3) используется неправильний тип объединения - [inner|left|right|full] [loop|hash|merge] join

промоделировать все 3 ситуации - дело 30 минут
плюс 1 час на моделирование основных ошибок - невозможность использования индекса в силу использования функционального предиката (в т.ч. неявное преобразование типов данных), использование излишне функциональных запросов.
22 июн 15, 10:43    [17801010]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
"промоделировать все 3 ситуации - дело 30 минут"

Вот почему у программиста всегда 30 минут, а руководитель проекта закладывает на его 30 минут еще два дня сверху? ;)

PS: Мужики, вам что файликов жалко? *.sqlpldn
22 июн 15, 15:05    [17802361]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Aramis
"промоделировать все 3 ситуации - дело 30 минут"

Вот почему у программиста всегда 30 минут, а руководитель проекта закладывает на его 30 минут еще два дня сверху? ;)

PS: Мужики, вам что файликов жалко? *.sqlpldn


прошли сутки, уже сам мог бы сделать


зы. зря ты обозвал всех "мужиками", а то глядишь мог бы уже и ответ получить
22 июн 15, 15:23    [17802429]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
человек_ниоткуда
Guest
Потырь у блоггеров. http://www.somewheresomehow.ru/ напрмер
22 июн 15, 16:27    [17802718]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Alexander Us
Member

Откуда:
Сообщений: 1153
Aramis,

Смотрите монитор активности в SSMS

или это
запросы, СЕЙЧАС выполняющиеся на вашем сервере.
План - крайняя колонка справа.

Какой из запросов плохой решайте сами.

SELECT 	
	 req.command command_type
	,sqltext.TEXT command_text
	, SUBSTRING(sqltext.text, (req.statement_start_offset/2)+1, 
        ((CASE req.statement_end_offset
          WHEN -1 THEN DATALENGTH(sqltext.text)
         ELSE req.statement_end_offset
         END - req.statement_start_offset)/2) + 1) AS statement_text
	,db_name(req.database_id) db_name
	,req.session_id
	,req.blocking_session_id
	,req.status as req_status
	,req.cpu_time req_cpu_time_ms
	,ses.cpu_time ses_cpu_time_ms
	,req.total_elapsed_time / 1000.0 req_elapsed_sec
	,ses.original_login_name
	,ses.host_name
	,ses.program_name
	,ses.host_process_id
	,ses.client_interface_name
	,ses.memory_usage
	--,ses.last_request_start_time
	--,ses.last_request_end_time
	,ses.reads
	,ses.writes
	,ses.logical_reads
	,ses.row_count
	,req.[sql_handle]
	,p.query_plan
	FROM 
		 sys.dm_exec_requests req with(nolock)
	JOIN sys.dm_exec_sessions ses with(nolock) on req.session_id=ses.session_id
	CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
	CROSS APPLY	sys.dm_exec_query_plan(req.plan_handle) AS p 	
	where 1=1
    and req.database_id > 4
	and req.session_id <> @@SPID
	order by 
	req.total_elapsed_time desc
22 июн 15, 17:10    [17802898]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
Aramis
"промоделировать все 3 ситуации - дело 30 минут"

Вот почему у программиста всегда 30 минут, а руководитель проекта закладывает на его 30 минут еще два дня сверху? ;)

PS: Мужики, вам что файликов жалко? *.sqlpldn


Мне промоделировать за вас?
Я могу, если нужно
Заодно могу и презентацию набросать, с методами выявления и оптимизации
22 июн 15, 17:25    [17802947]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Aramis,

Бред сивой кобылы, простите.
Презентацию по оптимизации запросов на запросах и планах которых вы даже не знаете? Ну кину я вам "плохой" план, как вы поймете что он действительно плохой и в чем именно проблема? Не имея ни структуры, ни индексов, ни данных?
Да и толку просто смотреть на "плохой" план без возможности его оптимизации? Типа смотрите дети как бывает, вот типа смотрите какой плохой план, тут Table Scan.

Простите, но чтобы учить чему то других, надо самому разбираться в вопросе, пока что это не наблюдается.
23 июн 15, 04:35    [17804616]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Mind,

Ты скинь плохие планы, я уже отсортирую, что там можно показывать, что нет

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

Например, часто в плане видно, когда оптимизатор ошибается из за кривой статистики - там обычно значительное различие между актуальным и оценочным числом строк

Прекрасными примерами для демонстрации могут быть графические планы с Sort warning, Hash warning и подобные

Или Nested Loops c огромным числом строк в ведущей таблице (мне такой прислали, очень хорошо!)

Искуственно созданные проблемы не очень интересно.

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

Поверьте, настоящий секс с женщиной гораздо привлекательнее, чем сидеть тут и троллить в каждой второй ветке!
Вы просто попробуйте!
23 июн 15, 08:49    [17804788]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Oleksii Kovalov,

Не очень хочется использовать хинты, не люблю лукавить.

Вот не хочется стоять перед людьми - "А вот еще был вот такой уникальный случай в практике" со скрещенными пальцами за спиной. Это принципиальный вопрос для меня :)
23 июн 15, 09:06    [17804834]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31824
Aramis
Поверьте, настоящий секс с женщиной гораздо привлекательнее, чем сидеть тут и троллить в каждой второй ветке!
Вы просто попробуйте!
Делать за других их работу, а по ночам подрабатывать на хлеб - никаких женщин уже будет не надо! :-)
23 июн 15, 09:06    [17804838]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Nitro_Junkie
Member

Откуда:
Сообщений: 1090
alexeyvg,

Можете зайти в мой профиль, открыть мои темы и из 15 верхних тем, половина будет проблема с плохими планами.
23 июн 15, 09:41    [17804985]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Aramis
Oleksii Kovalov,

Не очень хочется использовать хинты, не люблю лукавить.

Вот не хочется стоять перед людьми - "А вот еще был вот такой уникальный случай в практике" со скрещенными пальцами за спиной. Это принципиальный вопрос для меня :)


лучше уж с фигой в кармане

зы. пошли третьи сутки ;-)
23 июн 15, 11:14    [17805486]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
во народ пошел.......дайте 2
23 июн 15, 12:20    [17805988]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
Aramis
Oleksii Kovalov,

Не очень хочется использовать хинты, не люблю лукавить.

Вот не хочется стоять перед людьми - "А вот еще был вот такой уникальный случай в практике" со скрещенными пальцами за спиной. Это принципиальный вопрос для меня :)


как правило, на докладах о выявлении косых мест и оптимизации делают максимально простые и сразу понятные примеры узловых/ключевых мест. Слушатели не будут вникать в огромный разветвлённый план.

А добиться повторяемости кривизны этих ключевых мест можно как раз хинтами
чтоб не "стоять со скрещенными пальцами"
23 июн 15, 13:07    [17806346]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Oleksii Kovalov

как правило, на докладах о выявлении косых мест и оптимизации делают максимально простые и сразу понятные примеры узловых/ключевых мест. Слушатели не будут вникать в огромный разветвлённый план.

А добиться повторяемости кривизны этих ключевых мест можно как раз хинтами
чтоб не "стоять со скрещенными пальцами"


Тут Вы правы, пожалуй несколько простых примеров можно сделать так

Но и яркие примеры из жизни тоже интересно получить, уже несколько таких набрал

Всем откликнувшимся спасибо!
23 июн 15, 15:00    [17807034]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
Aramis

Всем откликнувшимся спасибо!


Да, и просьба все еще в силе - у кого залежались интересные примеры плохих планов (желательно с текстами), шлите, буду очень признателен!
23 июн 15, 15:04    [17807064]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
mini.weblab
Member

Откуда:
Сообщений: 1117
Aramis,
могу забрасывать свои запросы по AdventureWorks

USE AdventureWorks;
GO

SELECT DISTINCT AccountNumber
FROM Sales.SalesOrderHeader soh
WHERE soh.SalesOrderID IN
 (
     SELECT DISTINCT SalesOrderId
     FROM Sales.SalesOrderDetail sod
     WHERE sod.ProductID IN
     (
       SELECT pp.ProductID
       FROM Production.Product pp
       WHERE UPPER( RTRIM( LTRIM(pp.Name) ) )  
       IN ( 'HL MOUNTAIN REAR WHEEL' )
     )
 );
 GO
24 июн 15, 13:33    [17811102]     Ответить | Цитировать Сообщить модератору
 Re: Нужны планы ПЛОХИХ запросов!!!  [new]
Aramis
Member

Откуда:
Сообщений: 13
mini.weblab,

Давай, если не жалко, любые идеи полезны :)
24 июн 15, 20:07    [17812874]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить