Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Acce_Ekb Member Откуда: Екатеринбург Сообщений: 87 |
Добрый день, Дано на одном сервере стоят одинаково сконфигурированные инстансы 2012 и 2016: 1. версии Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Standard Edition (64-bit) Microsoft SQL Server 2016 (SP1-CU5) (KB4040714) - 13.0.4451.0 (X64) Enterprise Edition (64-bit) 2. sp_configure на инстансах одинаковые (с точностью до новых для 2016 опций). 3. На каждом инстансе создается одинаковая пустая БД, нацеленная на одну и ту же папку на диске, начальный размер и параметры приращения ставятся одинаковые. 4. В БД отключаются автосоздание и обновление статистик. 5. Выполняется тест с insert 10 тыс. строк в таблицу (привожу пример с кучей, но не принципиально): set nocount on go exec( ' create table dbo.TestInsert ( i int not null , s varchar(50) not null ) ') declare @d1 datetime , @d2 datetime , @i int set @d1 = getdate() set @i = 1 while @i <= 10000 begin insert into dbo.TestInsert ( i, s ) select @i, replicate( 'a', 50 ) set @i = @i + 1 end set @d2 = getdate() select datediff(ms, @d1, @d2) exec( 'drop table TestInsert') Результат 1 Стабильно воспроизводится отставание в 2016. В среднем в тестах длительность на 2012 = 530 мс, длительность на 2016 = 600 мс. Далее, 6. настраивается профайлер для замера длительностей сбора статистики (фильтр по TextData like <наш insert>) в таблицу (т.е. будем смотреть длительность в микросекундах). Результат 2 Гистограмма длительностей отдельных insert 2012 vs 2016: К сообщению приложен файл. Размер - 16Kb |
28 сен 17, 16:27 [20829519] Ответить | Цитировать Сообщить модератору |
Acce_Ekb Member Откуда: Екатеринбург Сообщений: 87 |
Вопросы - 1. может ли кто-то воспроизвести у себя подобное? 2. какие есть мысли по отставанию 2016, что почитать? |
28 сен 17, 16:29 [20829529] Ответить | Цитировать Сообщить модератору |
aleks222
Guest |
Если к коду добавить еще несколько строчек - быстрее работать не будет. Дык вот, 2016 это дописанный 2012. За крайне редким исключением, новые версии ПО медленнее старых, ибо за доп. прибамбасы надо платить. |
28 сен 17, 19:48 [20830083] Ответить | Цитировать Сообщить модератору |
Acce_Ekb Member Откуда: Екатеринбург Сообщений: 87 |
Добавлю еще сведений:
|
29 сен 17, 07:36 [20830688] Ответить | Цитировать Сообщить модератору |
Prolog Member Откуда: Москва Сообщений: 2793 |
Попробуйте на 2016 перевести базу в уровень совместимости 2012. И повторите insert'ы. |
29 сен 17, 10:21 [20830960] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
для одиночного инсерта возможен какой-то другой план? |
||
29 сен 17, 10:53 [20831092] Ответить | Цитировать Сообщить модератору |
Prolog Member Откуда: Москва Сообщений: 2793 |
Ой не знаю! Однако у нас была заметная деградация производительности при переходе на 2014. Вылечилась (по совету Microsoft) переводом базы данных на уровень совместимости 2012. |
||||
29 сен 17, 11:07 [20831137] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
под деградацией вы понимаете времы выполнения судя по всему |
||||
29 сен 17, 11:12 [20831146] Ответить | Цитировать Сообщить модератору |
Prolog Member Откуда: Москва Сообщений: 2793 |
TaPaK, да, под деградацией производительности я понимаю увеличение времени выполнения запросов. Miscrosoft где-то писала, что если на 2014 запросы выполняются медленнее, чем на предыдущих версиях, то нужно установить совместимость с 2012. |
29 сен 17, 11:22 [20831178] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
ну вопросов больше нет |
||
29 сен 17, 11:23 [20831186] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Prolog, И вы даже не выяснили причину этого, а просто сделали как сказала майрасофт. Такие темы часто в инете выскакивают и частенько причина новый cardinality estimator, но у вас видимо гугл забанен. |
29 сен 17, 11:36 [20831248] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
деградация, сэр :) |
||
29 сен 17, 11:38 [20831254] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
какой смешной товарищ. планы не пробовали сравнивать? если что-то поменялось, то благодаря чему-то. и это что-то в 2014-ом это новый оптимайзер, генерящий другие планы, ибо у него правила оценок кардинальности поменялись. и меняя compatibility level, вы возвращаете старый оптимайзер. ну а теперь скажите, что там неправильно можно оценить, вставляя 1 значение в кучу, а главное, какой же другой план можно придумать для этого инсерта? |
||||
29 сен 17, 11:41 [20831271] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
вот у invm была здравая идея, что может в лог в 2016-ом больше записывается. ну так ТС же приводит цифры, сколько в лог ушло в обоих случаях. |
29 сен 17, 11:43 [20831278] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
o-o, А почему в 2016 в лог может больше писаться, вроде алгоритм с 2012 не менялся или я чего-то упустил? |
29 сен 17, 11:48 [20831290] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
может-может. просто реально больше записей валится, щас поищу, какие именно. ну и могут просто формат записей поменять, именно поэтому же мирроринг идет только в одну сторону, с младшей на старшую версию. обратно не пойдет, формат записей лога другой |
||
29 сен 17, 11:53 [20831313] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
раз не могу найти в письменном виде, значит, это было в каком-то видео. поищу уже из дома. там смысл был такой: Рэндал какие-то типы записей в логе показывал на своем 2012-ом, а у меня этого типа записей просто не было, ибо 2008. вот не то чтобы база не могла жить без этих записей, но ради какого-то удобства себе добавили |
29 сен 17, 12:18 [20831371] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
o-o, Спасибо, вечером поищу. |
29 сен 17, 12:20 [20831378] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
в общем, если проделать тест из видео Рэндала про Page Split видаcreate table test (c1 int, c2 chAR(1000)) create clustered index test_cl on test(c1) insert into test values(1,'a') insert into test values(2,'b') insert into test values(3,'c') insert into test values(5,'e') insert into test values(6,'f') insert into test values(7,'g') insert into test values(8,'h') insert into test values(9,'i') checkpoint insert into test values(4,'d') select * from sys.fn_dblog(null, null) на 2008 и на 2012, то на 2012-ом чуть не вдвое больше записей в логе, ибо добавили LOP_INSYSXACT |
29 сен 17, 21:48 [20832649] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
|
||
29 сен 17, 22:36 [20832729] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
|
|
29 сен 17, 23:25 [20832814] Ответить | Цитировать Сообщить модератору |
Дедушка Member Откуда: Город трёх революций Сообщений: 5114 |
o-o, спасибо. |
29 сен 17, 23:32 [20832834] Ответить | Цитировать Сообщить модератору |
Makar4ik Member Откуда: Когда-то были Лужки, а теперь Бордюр-Сити. Сообщений: 2680 |
..а ещё 16-му добавьте 32-64 гб памяти.... чем новее - тем более жадные до памяти алгоритмы. Расчёт на то, что мозгов больше. |
30 сен 17, 00:12 [20832902] Ответить | Цитировать Сообщить модератору |
Makar4ik Member Откуда: Когда-то были Лужки, а теперь Бордюр-Сити. Сообщений: 2680 |
...это на 2008 канало 8-16-24 гига памяти на сервере... теперь, чем больше, тем меньше пролбем... |
30 сен 17, 00:15 [20832906] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
...а еще сказано, что инстансы сконфигурированы одинаково. но особо продвинутые могут рассказать, зачем при построчной вставке 10 тыс. строк в таблицу необходимо добавить 64Гига памяти. боюсь спросить, сколько же надо добавить памяти, чтобы суметь вставить гигабайт данных. тут без терабайта памяти всем капец, наверное |
30 сен 17, 00:26 [20832928] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |