Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
declare
	@PFam varchar(50),
	@PName varchar(50),
	@POth varchar(50)

set @PFam = 'иванова'
set @PName = 'и'
set @POth = ''

set tran isolation level read uncommitted
SELECT * FROM (
		SELECT DISTINCT 
        HISTORY_ID,           
        HISTORY_P_FAM,           
        ISNULL(HISTORY_P_NAME, '') HISTORY_P_NAME,           
        ISNULL(HISTORY_P_PATRONYM, '') HISTORY_P_PATRONYM
	
			  FROM HISTORY HISTORY 
			 INNER JOIN DEPART DEPART  ON HISTORY.DEPARTMENT_ID = DEPART.DEPARTMENT_ID
	WHERE
          	 	HISTORY_P_FAM = @PFam AND 
           		((DEPART.DEPART_DIVISION_ID = 1) OR 
           				(DEPART.DEPARTMENT_ID IN (SELECT DEPARTMENT_BASE_ID FROM PRICE.DBO.DEPARTMENT WHERE DEPARTMENT_FILIAL = 1)))
    ) TP WHERE 
				ISNULL(HISTORY_P_NAME, '') LIKE '' + @PName + '%' AND
           		ISNULL(HISTORY_P_PATRONYM, '') LIKE '' + @POth + '%'
	OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN)
индекс по полю HISTORY.HISTORY_P_FAM
индекс по полю HISTORY.DEPARTMENT_ID
индекс по полям HISTORY.HISTORY_P_FAM и HISTORY.DEPARTMENT_ID
индекс по полю DEPART.DEPARTMENT_ID кластерный

записей в таблице HISTORY чуть больше 6 миллионов, таблица DEPART справочник (не больше 2 тысяч)


выполняю запрос на бывшем 2000 сервере, выполняется за 1 секунду в первый раз, когда на новом сервере 2008r2 в студии выполняю длиться от 30 секунд в первый раз...не понимаю в чем проблема..
7 ноя 11, 12:51    [11557475]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
marvel
выполняю запрос на бывшем 2000 сервере, выполняется за 1 секунду в первый раз, когда на новом сервере 2008r2 в студии выполняю длиться от 30 секунд в первый раз...не понимаю в чем проблема..

Идея сравнить планы не пришла в голову ?
7 ноя 11, 12:54    [11557496]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
step_ks
Member

Откуда:
Сообщений: 936
для начала попробовать убрать хинты
7 ноя 11, 12:56    [11557511]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
step_ks
для начала попробовать убрать хинты


идея не очень - надо всегда сначала сравнить планы, а потом уже чтото делать... в т.ч. и хинты убирать.
7 ноя 11, 12:59    [11557541]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

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


К сообщению приложен файл. Размер - 61Kb
7 ноя 11, 13:02    [11557551]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
7 ноя 11, 13:02    [11557553]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

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


К сообщению приложен файл. Размер - 77Kb
7 ноя 11, 13:02    [11557556]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

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

вот последний скрин я не понимаю.... как я понимаю он на нем затыкается
7 ноя 11, 13:03    [11557558]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
marvel
вот последний скрин я не понимаю.... как я понимаю он на нем затыкается

Сервер делает все как вы ему указали и FORCE ORDER и LOOP JOIN
Наверное выбранный вами план не хорош.
7 ноя 11, 13:06    [11557572]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
Glory
marvel
вот последний скрин я не понимаю.... как я понимаю он на нем затыкается

Сервер делает все как вы ему указали и FORCE ORDER и LOOP JOIN
Наверное выбранный вами план не хорош.


без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN) абсолютно тот же план
7 ноя 11, 13:07    [11557578]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
marvel
без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN) абсолютно тот же план

Потому что уже из-за KEEP PLAN план закеширован и используется заново ?
7 ноя 11, 13:10    [11557591]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
Glory
marvel
без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN) абсолютно тот же план

Потому что уже из-за KEEP PLAN план закеширован и используется заново ?



открыл новую студию, выполнил запрос без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN), план такой же, подскажите, может где то надо в другом месте что то сделать?
7 ноя 11, 13:14    [11557630]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
marvel
открыл новую студию, выполнил запрос без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN),

План кешируется на сервере, а не в студии
И очищается он командой DBCC FREEPROCCACHE
7 ноя 11, 13:17    [11557653]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
marvel
Glory
пропущено...

Сервер делает все как вы ему указали и FORCE ORDER и LOOP JOIN
Наверное выбранный вами план не хорош.


без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN) абсолютно тот же план

Значит смысла в использование OPTION с такими параметрами нет.
И разовраться с кешем.
7 ноя 11, 13:17    [11557655]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
Anatoly Podgoretsky
Значит смысла в использование OPTION с такими параметрами нет.

KEEP PLAN не запрещает полностью перекомпиляцию плана. А всего лишь уменьшает вероятность перекпомпиляции
7 ноя 11, 13:28    [11557765]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
Glory
marvel
открыл новую студию, выполнил запрос без OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN),

План кешируется на сервере, а не в студии
И очищается он командой DBCC FREEPROCCACHE


Спасибо.
Вы были правы.
Написал хранимую процедуру без использования OPTION (FORCE ORDER,LOOP JOIN, KEEP PLAN), скорость восстановилась.

не рискнул пользоваться DBCC FREEPROCCACHE на рабочем сервере, хотя было бы очень полезно узнать как очистить план именно для определенного запроса
7 ноя 11, 13:35    [11557815]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
RECOMPILE
Instructs the SQL Server Database Engine to discard the plan generated for the query after it executes, forcing the query optimizer to recompile a query plan the next time the same query is executed. Without specifying RECOMPILE, the Database Engine caches query plans and reuses them. When compiling query plans, the RECOMPILE query hint uses the current values of any local variables in the query and, if the query is inside a stored procedure, the current values passed to any parameters.

RECOMPILE is a useful alternative to creating a stored procedure that uses the WITH RECOMPILE clause when only a subset of queries inside the stored procedure, instead of the whole stored procedure, must be recompiled
7 ноя 11, 13:40    [11557855]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
marvel,

а что с новым планом? давайте на него посмотрим?
7 ноя 11, 13:55    [11557957]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
aleks2
Guest
1. Замените
          		((DEPART.DEPART_DIVISION_ID = 1) OR 
           				(DEPART.DEPARTMENT_ID IN (SELECT DEPARTMENT_BASE_ID FROM PRICE.DBO.DEPARTMENT WHERE DEPARTMENT_FILIAL = 1)))
на

DEPART.DEPARTMENT_ID IN (SELECT DEPARTMENT_BASE_ID FROM PRICE.DBO.DEPARTMENT WHERE DEPARTMENT_FILIAL = 1
                                        union all
                                        select 1    
   )

2. Замените
WHERE 
				ISNULL(HISTORY_P_NAME, '') LIKE '' + @PName + '%' AND
           		ISNULL(HISTORY_P_PATRONYM, '') LIKE '' + @POth + '%'

WHERE 
				HISTORY_P_NAME LIKE '' + @PName + '%' AND
           		HISTORY_P_PATRONYM LIKE '' + @POth + '%'

будет ишо быстрее.
7 ноя 11, 13:57    [11557978]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

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

К сообщению приложен файл. Размер - 77Kb
7 ноя 11, 14:10    [11558075]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
komrad
Member

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

параллелизм я бы для запроса отключил ;)

option (MAXDOP 1)
7 ноя 11, 14:24    [11558196]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
marvel
SanyL,



1. параллелизм :)

2. Index Scan - но вероятно не проблема
3. возможно есть смысл обновить статистики
4.
и "поиск ключа" - возможно есть смысл индекс IX_HISTORY_DEPFAM делать с включенным "ключем" "который ищется"

ps руссифицированный SQL - извращение :) ... поиск ключа :) ...
7 ноя 11, 14:35    [11558295]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
aleks2
1. Замените
          		((DEPART.DEPART_DIVISION_ID = 1) OR 
           				(DEPART.DEPARTMENT_ID IN (SELECT DEPARTMENT_BASE_ID FROM PRICE.DBO.DEPARTMENT WHERE DEPARTMENT_FILIAL = 1)))
на

DEPART.DEPARTMENT_ID IN (SELECT DEPARTMENT_BASE_ID FROM PRICE.DBO.DEPARTMENT WHERE DEPARTMENT_FILIAL = 1
                                        union all
                                        select 1    
   )



это не прокатит поля разные
7 ноя 11, 14:53    [11558486]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

Откуда:
Сообщений: 1066
опять повторение ситуации, зависание при выполнении запросов.
причем перекомпилировал хранимую процедуру с помощью sp_recompile

причем не понимаю почему планы выполнения в 2000 и 2008 разные!!! и как привести их к единому быстрому...

К сообщению приложен файл. Размер - 147Kb
8 ноя 11, 14:47    [11563950]     Ответить | Цитировать Сообщить модератору
 Re: при переходе с 2000 на 2008 заметно снизилась скорость выполнения запроса  [new]
marvel
Member

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


К сообщению приложен файл. Размер - 75Kb
8 ноя 11, 14:47    [11563953]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить