Rozetka UA

Performance MS SQL SERVER 2005/2008 vs 2012

Недавно получил доступ к серверу 2012 версии. Настройки схожие, железо не очень. Есть у меня такой тест, заведомо глупый запрос (см ниже).

Примерно проверял производительность серверов. Здесь, по сути, измеряется производительность RAM иCPU.

Средняя цифра для 2005/2008 серверов 2200-3500.

Для 2012 сервера эта цифра на уровне 305-330. Не поверил, напросился к знакомым попробовать на другом 2012- цифра на уровне 420-450 на достаточно скромном железе.

То есть, в 7-10 раз меньше, чем для 2005/2008 серверов. 2012 сервер работает на порядок быстрей.

Проверял план запроса- абсолютно идентичен. Проверял с таблицей не во временной а в обычной базе- тот же результат.

Причина не вполне понятна. Можно предположить, что это особенности 12 версии.

Были внесены серьезные изменения в оптимизатор, по умолчанию включены режимы, которые ранее включались флагами трассировки.

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

Зачем платить деньги при переходе на новую версию, за что платить, если все и так работает?

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

 

—drop table #testRunner

—Gorchilin 20160526

set nocount on

create table #testRunner(a1 real,a2 real, a3 real,text_f varchar(800))

go

declare @size_tab_mb int

select @size_tab_mb=10 —размер тестовой таблицы

while (select count(*) from #testRunner)<1000*@size_tab_mb insert into #testRunner(a1,a2,a3,text_f) select rand(),rand(),rand(),replicate(‘a’,800) —несколько раз запускаем этот фрагмент: declare @timestart datetime,@a int select @timestart=getdate() select @a=count(*) from #testRunner tr1 inner join #testRunner tr2 on tr1.a1=tr2.a1 inner join #testRunner tr3 on tr3.a1=tr2.a1; select @a=count(*) from #testRunner tr1,#testRunner tr2,#testRunner tr3 where tr1.text_f like ‘%BBB%’ and tr2.text_f like ‘%BBB%’ and tr3.text_f like ‘%BBB%’; select @a=count(*) from #testRunner where text_f like ‘%CCC%’; select @a=count(*) from #testRunner where text_f like ‘%DDD%’; select @a=count(*) from #testRunner where a1>0.5;

select @a=count(*) from #testRunner where a2>0.5;

select @a=count(*) from #testRunner where a3>0.5;

select @@servername+’ Продолжительность работы, ms:’,datediff(ms,@timestart,getdate());

 

 

Recently gained access to the server 2012 version. similar settings, the equipment is not very productive. I’ve got such a test, obviously a silly request (see below).

About checking the performance of the servers. Here, in fact, measured RAM iCPU performance.

The average figure for 2200-3500 2005/2008 servers.

this figure at 305-330 for the 2012 server. I do not believe it, asked for it to friends to try on another 2012- figure at 420-450 at a modest hardware.

That is 7-10 times less than for the 2005/2008 servers. 2012 server runs an order of magnitude faster.

Checked zaprosa- plan is exactly the same. Tested to the table is not in the time and in the normal baze- the same result.

The reason is not quite clear. We can assume that this particular version 12.

significant changes were made to the optimizer, the default mode is activated, which were previously included trace flags.

That is, there may be influenced not only the performance but also improved the server logic.

Why pay money when upgrading to a new version of what to pay, if everything is working?

You can pick up any load test, test. It looks more than convincing.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Pratik UaPratik UaPratik Ua