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

Откуда:
Сообщений: 114
Добрый день.
Столкнулся с проблемой низкой производительность SQL 2012 против SQL 2005.
Исходные данные:
1. Старый сервер
DELL PowerEdge 2950
2 процессора Intel(R) Xeon(R) CPU E5320 @ 1.86GHz по 4 ядра
16Gb оперативы
RAID Controller PERC 5/I:
1. RAID-0 (System) 68Gb,SAS,Размер сектора 64 Kb,смещение 1024 Kb, Read Ahead, Write Back
2. RAID-5 (data+log) 1,2Tb,SAS,Размер сектора 64 Kb,смещение 1024 Kb , Read Ahead, Write Back
Microsoft Windows Server 2008 R2, Standard x64 Edition SP1 RUS + all updates
Microsoft SQL Server 2005 Standard Edition (64-bit) (9.00.5000.00) ENG + all updates
2. Новый Сервер
DELL PowerEdge R910
2 процессора Intel(R) Xeon(R) CPU E7- 8837 @ 2.67GHz по 8 ядер
64Gb оперативы
RAID Controller PERC H700 Integrated
1. RAID-1 (System) 136 Gb,SAS,Размер сектора 64 Kb,смещение 1024 Kb, Read Ahead, Write Back
2. RAID-10 (DATA) 544Gb,SAS, 4SPAN x 2HDD,Размер сектора 64 Kb,смещение 64 Kb, Read Ahead, Write Back
3. RAID-10 (LOG) 410Gb,SAS, 3SPAN x 2HDD,Размер сектора 64 Kb,смещение 64 Kb, Read Ahead, Write Back
Microsoft Windows Server 2012, Standard x64 Edition RUS + all updates
Microsoft SQL Server 2012 Standard (64-bit) (11.0.3128.0) RUS (лицензирован на 16 ядер) + all updates


Протестировал дисковые массивы с помощью HD Tune - естественно, что скорость работы массивов на новом сервере раза в 4 выше чем на старом.

На старом сервере и mdf-файлы и log-файлы лежат на одном RAID-массиве. На новом сервере они разнесены по разным RAID-массивам.
Ситуация такая, сделал резервное копирование БД на 2005, создал новые БД на 2012, восстановил из бэкапов базы, проверил все базы и в настройках изменил уровень совместимости баз 2012(110).
После этого, по всем БД запустил перестроение индексов и обновление статистики.

И вот какая ситуация, большие запросы, связанные с TRUNCATE TABLE и последующим BULK INSERT, выполняются на новом сервере раз в 5 медленнее (30 минут против 150-170 минут на новом). Да и не только такие запросы, в целом работа 2012 с перенесенными БД медленнее. Запросы классические : SELECT,INSERT , без работы с курсорами и т.д.

Запускал коллекторы на винде, диски работают спокойно и без перегрузок, память тоже, а вот процессор, во время больших запросов подгружается на 100% в течении всего времени выполнения запроса. Во время выполнения больших запросов tempDB вырастает до 20 Гб, настроил ее так : начальный размер 10Гб mdf и 10Гб ldf, рост с шагом 500Мб.

Где может быть засада? Очень не хочется грешить на железо, надеюсь что есть способы правильной настройки 2012 SQl сервера для быстрой работы.В какую сторону копать?

Буду благодарен всем за помощь.
14 окт 13, 10:20    [14964929]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
aleks2
Guest
Статистику обнови. С fullscan.
14 окт 13, 10:25    [14964958]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Так и делал после перестроения индексов. По всем таблицам и представлениям WITH FULL SCAN
14 окт 13, 10:30    [14964978]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
Tauzer
Да и не только такие запросы, в целом работа 2012 с перенесенными БД медленнее. Запросы классические : SELECT,INSERT , без работы с курсорами и т.д.

И планы совпадают ?
А машина не виртуальная часом ?
14 окт 13, 10:42    [14965073]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Машина не виртуалная.
На счет планов - точно сейчас не скажу.Я не разработчик, я администратор. Разработчики , когда тестили, говорили, что планы совпадают.В течении дня у них уточню этот вопрос и дам ответ,возможно, меня ввели в заблуждение, дабы спихнуть на меня проблему.
14 окт 13, 10:46    [14965110]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Crimean
Member

Откуда:
Сообщений: 13147
странно что новый проц грузится - он мощнее, должен вообще бездельничать
14 окт 13, 11:02    [14965236]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Планы действительно немного не совпадают:
Разработчики мне сейчас дали пример запроса.

Запрос:
declare @pref as varchar(5)
declare @dl as varchar(1)

delete from ГрафикОплаты where pref=@pref and НомерДоговора like '_'+@dl+'%';

insert into ГрафикОплаты with (TABLOCK) (pref, НомерДоговора, Дата, Валюта,
	ОплаченоПланВалюта, ОплаченоФактВалюта, ОстатокПлатежей)
	select a.pref, a.НомерДоговора, a.Дата, a.валюта, a.ОплаченоПланВалюта , b.ОплаченоФактВалюта, 
	(select sum(Значение) from График1С where pref=a.pref and НомерДоговора=a.НомерДоговора 
	and Дата > a.Дата and Валюта = a.Валюта and ПФ=0)
	from ГрафикОплатыПлан a left join ГрафикОплатыФакт b
	on a.pref = b.pref and a.НомерДоговора = b.НомерДоговора 
	and a.Дата = b.Дата and a.Валюта = b.Валюта where a.pref=@pref and b.pref=@pref 
	and a.НомерДоговора like '_'+@dl+'%' and b.НомерДоговора like '_'+@dl+'%';
	update ГрафикОплаты set ОплаченоФактВалюта=0 where ОплаченоФактВалюта is NULL;
	update ГрафикОплаты set ОплаченоПланВалюта=0 where ОплаченоПланВалюта is NULL;
	update ГрафикОплаты set ОстатокПлатежей=0 where ОстатокПлатежей is NULL;


SQL 2005:

Картинка с другого сайта.
Картинка с другого сайта.
Картинка с другого сайта.


SQL 2012:

Картинка с другого сайта.
Картинка с другого сайта.
Картинка с другого сайта.
14 окт 13, 11:15    [14965332]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Crimean
странно что новый проц грузится - он мощнее, должен вообще бездельничать


В том-то и дело. Поэтому я пока не грешу на железо, а грешу на какие-то конфликты выполнения запросов.
14 окт 13, 11:17    [14965344]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Glory
Member

Откуда:
Сообщений: 104751
Планы - разные. Судя по 1му delete, и количество индексов разное ?

ЗЫ
Планы лучше предоставлять в виде файла. Или текста
14 окт 13, 11:29    [14965471]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Да нет, кол-во индексов одинаковое.
Слева 2012, справа 2005
Картинка с другого сайта.
14 окт 13, 11:40    [14965588]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Glory
Планы - разные. Судя по 1му delete, и количество индексов разное ?


+1 еще и данные и/или параметры разные
в случае 2005 у нас основную нагрузку делают 3 финальных UPDATE
а в случае 2012 все "затыкается" на INSERT, план которого, "кстати", действительно "тот же"
зато под 12 финальные 3 update со свистом проходят ибо им менять нечего
так что где-то кто-то кого-то основательно обманывает
14 окт 13, 11:58    [14965735]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
у вас парралелилизм в последних 3 апдейтах не включился против 3 апдейтов на 2005 сервере.
14 окт 13, 12:12    [14965868]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Мистер Хенки
у вас парралелилизм в последних 3 апдейтах не включился против 3 апдейтов на 2005 сервере.

Это, насколько я понимаю, означает что ожидаемая стоимость выполнения последовательного плана для того же запроса НИЖЕ значения, установленного в параметре cost threshold for parallelism
14 окт 13, 12:16    [14965908]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Tauzer
Мистер Хенки
у вас парралелилизм в последних 3 апдейтах не включился против 3 апдейтов на 2005 сервере.

Это, насколько я понимаю, означает что ожидаемая стоимость выполнения последовательного плана для того же запроса НИЖЕ значения, установленного в параметре cost threshold for parallelism


+

In certain cases, a parallel plan may be chosen even though the query's cost plan is less than the current cost threshold for parallelism value. This can happen because the decision to use a parallel or serial plan is based on a cost estimate provided before the full optimization is complete.

The cost threshold for parallelism option can be set to any value from 0 through 32767. The default value is 5.

SQL Server ignores the cost threshold for parallelism value under the following conditions:

Your computer has only one processor.


Only a single CPU is available to SQL Server because of the affinity mask configuration option.


The max degree of parallelism option is set to 1.


The cost threshold for parallelism option is an advanced option. If you are using the sp_configure system stored procedure to change the setting, you can change cost threshold for parallelism only when show advanced options is set to 1. The setting takes effect immediately (without a server restart).

14 окт 13, 12:19    [14965932]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
kalimba
Member

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

А этот параметр и max degree of parallelism одинаковые на обоих серверах?
14 окт 13, 12:20    [14965942]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
Tauzer
Member

Откуда:
Сообщений: 114
Одинаковые на обоих:

Cost Threshold for Parallelism 5
Locks 0
Max Degree of Parallelism 0
Query Wait -1
14 окт 13, 12:26    [14965998]     Ответить | Цитировать Сообщить модератору
 Re: Производительность SQL 2012 ниже чем SQL 2005  [new]
SFlash
Member

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

Желательно планы в XML бы. По картинке неудобно смотреть.
14 окт 13, 14:33    [14967140]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить