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

Откуда:
Сообщений: 54
Добрый день! имеет место следующий вопрос: при мониторинге загрузки SQL Server (используется 2000й) анализируем параметр SQL compilation/sec - но! очень бы хотелось понять, какие именно запросы у нас компилируются! Т.е. задача получить те запросы, которые влияют на этот показатель! Их можно получить, как я думаю, с помощью SQL Profiler.
Сам вопрос: какие события в нем необходимо отлавливать для анализа SQL compilation/sec? Заранее спасибо!
3 ноя 09, 17:28    [7878412]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Вы профайлер уже запускали? Видели, какие там есть события?
3 ноя 09, 17:33    [7878444]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
запускал.. видел.. и?
3 ноя 09, 17:47    [7878541]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
что - никто не сталкивался, никто не знает?? :(
4 ноя 09, 10:36    [7880305]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SergeyZuh
Добрый день! имеет место следующий вопрос: при мониторинге загрузки SQL Server (используется 2000й) анализируем параметр SQL compilation/sec - но! очень бы хотелось понять, какие именно запросы у нас компилируются!

Компилируются вообще то все запросы. Потому что невозможно выполнить запрос без компиляции
Просто существует кэш планов выполнения, в котором уже может находиться план текущего запроса. Тогда сервер берет этот уже готовый план, а не компилирует запрос.
4 ноя 09, 10:49    [7880328]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
Glory
Компилируются вообще то все запросы. Потому что невозможно выполнить запрос без компиляции
Просто существует кэш планов выполнения, в котором уже может находиться план текущего запроса. Тогда сервер берет этот уже готовый план, а не компилирует запрос.

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

Сообщение было отредактировано: 4 ноя 09, 10:58
4 ноя 09, 10:57    [7880362]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SergeyZuh
Glory
Компилируются вообще то все запросы. Потому что невозможно выполнить запрос без компиляции
Просто существует кэш планов выполнения, в котором уже может находиться план текущего запроса. Тогда сервер берет этот уже готовый план, а не компилирует запрос.

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

Ну тогда вам нужны события SQL:StmtRecompile/SP:Recompile в которых в EventSubClass содержится причина перекомиляции.
И кроме того почитать главу хелпа Execution Plan Caching and Reuse
4 ноя 09, 11:02    [7880380]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
Glory
Ну тогда вам нужны события SQL:StmtRecompile/SP:Recompile в которых в EventSubClass содержится причина перекомиляции.
И кроме того почитать главу хелпа Execution Plan Caching and Reuse

Главу читал.. ии не только эту.. Но там так и не написано какие события относятся к параметру сервера SQL compilation... Кстати, события типа SP: относятся скорее к хранимым процедурам.. а у мне надо отлавливать события компиляции обычных запросов. Это скорее относится, как я пониимаю, к разделу TSQL. В нем есть несколько событий Exec Prepared SQL и Prepare SQL. как я понял после курения мануалов, то первое событие возникает, если выполняется запрос по готовому плану TSQL а второе - когда сервер компилит запрос, который считает новым. Но анализ показывает что грубо говоря за секунду возникает всего 5-9 событий типа Prepare SQL, а показатель SQL compilation/sec находится на уровне 35-40 позиций.. т.е. какие то еще собития неучтены..
А SQL:StmtRecompile/SP:Recompile события как я понял из тех же мануалов относятся к показателю SQL recompile/sec
Может я где-то ошибаюсь??
4 ноя 09, 11:38    [7880521]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SergeyZuh
Glory
Ну тогда вам нужны события SQL:StmtRecompile/SP:Recompile в которых в EventSubClass содержится причина перекомиляции.
И кроме того почитать главу хелпа Execution Plan Caching and Reuse

Главу читал.. ии не только эту.. Но там так и не написано какие события относятся к параметру сервера SQL compilation...

Мда. Еще раз - каждый запрос перед выполнение проходит компиляцию. Вы понимаете слово "каждый" ?
4 ноя 09, 11:42    [7880536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
Glory
Мда. Еще раз - каждый запрос перед выполнение проходит компиляцию. Вы понимаете слово "каждый" ?

Тогда скажите - параметр сервера Batch Request - колчество всего поступающих на сервер запросов.. Если каждый из них проходит компиляцию - тогда почему SQL compilation не совпадает с параметром Batch Request ?
4 ноя 09, 12:17    [7880661]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SergeyZuh
Glory
Мда. Еще раз - каждый запрос перед выполнение проходит компиляцию. Вы понимаете слово "каждый" ?

Тогда скажите - параметр сервера Batch Request - колчество всего поступающих на сервер запросов.. Если каждый из них проходит компиляцию - тогда почему SQL compilation не совпадает с параметром Batch Request ?

Потому что для некоторых запросов берется уже готовый план

Before a Transact-SQL query, batch, stored procedure, trigger, prepared statement, or dynamic SQL statement begins execution on an instance of Microsoft SQL Server, it is compiled into a query plan by the SQL Server Database Engine query optimizer. Then the plan is executed to produce a result-set. The compiled query plans are stored into a part of SQL Server memory that is called the plan cache. Query performance can be analyzed to improve it by viewing query execution plans or by manipulating the way cached query plans are used by applications.
4 ноя 09, 12:22    [7880691]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
Вот я и говорю - что мне надо получить именно те запросы, которые компилируются сейчас.. если я вижу параметр SQL compilation/sec = 30, мне нужно получить те самые 30 запросов, которые были скомпилены.. как это сделать?
4 ноя 09, 12:29    [7880720]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
Showplan All For Query Compile
4 ноя 09, 12:33    [7880754]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
SergeyZuh
Member

Откуда:
Сообщений: 54
Glory
Showplan All For Query Compile

МММ - вот это именно то что надо! Только с одним нюансом

автор
The Showplan All for Query Compile event class occurs when Microsoft SQL Server compiles a SQL statement. Include this event class to identify the Showplan operators on SQL Server 2005 and later.

а у нас стоит 2000 :(
4 ноя 09, 13:09    [7880908]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с оптимизацией производительности!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SergeyZuh

а у нас стоит 2000 :(

Значит вам не повезло
4 ноя 09, 13:10    [7880912]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить