Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / база с таблицами InMemory долго стартует / 25 сообщений из 28, страница 1 из 2
23.08.2018, 19:05
    #39692593
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Приветствую

Есть такая проблема, при наличии в базе таблиц InMemory (DURABILITY = SCHEMA_ONLY) значительно увеличивается время начального включения базы. Например, база размером в 500 Мб с файловой группой Inmemory (160 пустых таблиц) объемом 30 Мб стартует 11-12 секунд; если дропнуть inmemory таблицы, то практически мгновенно.
Ситуация ухудшается, если на инстансе несколько таких баз и recovery происходит параллельно. До трех баз время старта сервера растёт линейно, начиная с четырех - растёт сразу до десятков минут (на более крупных базах - до часов).

Пока базы не пришли в онлайн, sql server занимает cpu максимально, до 100%. Память свободная при этом есть

Код: plaintext
Microsoft SQL Server 2017 (RTM-CU9) (KB4341265) - 14.0.3030.27 (X64) 
флаг -t 9944 не помог, права серверу на volume maintenance tasks тоже

В связи с этим два вопроса:
1. как это лечится?
2. так как базы по одной из offline стартовать можно относительно быстро, есть ли способ после выключения сервера указать ему, чтобы на старте некоторые базы сервер сразу выводил в offline?

Спасибо
...
Рейтинг: 0 / 0
23.08.2018, 20:57
    #39692647
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
...
Рейтинг: 0 / 0
23.08.2018, 22:02
    #39692672
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
...
Рейтинг: 0 / 0
23.08.2018, 22:45
    #39692685
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakill,

Там еще TF 9944 упомянут.
...
Рейтинг: 0 / 0
23.08.2018, 22:45
    #39692686
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Не заметил, что TF 9944 не помог...
...
Рейтинг: 0 / 0
24.08.2018, 17:55
    #39693091
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
помогло добавить на виртуалку много ядер, чтоб их стало больше, чем таких баз на инстансе; время старта снова стало примерно как сумма восстановления отдельных баз.
но решение явно не во всех случаях подойдет и не закрыт вопрос с тем, что база с inmemory таблицами сама по себе стартует существенно дольше, чем без них
...
Рейтинг: 0 / 0
27.08.2018, 13:26
    #39693682
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakill,

сервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами.
...
Рейтинг: 0 / 0
27.08.2018, 14:41
    #39693743
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakillпомогло добавить на виртуалку много ядер, чтоб их стало больше, чем таких баз на инстансе; время старта снова стало примерно как сумма восстановления отдельных баз.
но решение явно не во всех случаях подойдет и не закрыт вопрос с тем, что база с inmemory таблицами сама по себе стартует существенно дольше, чем без них


InMemory любит процессоры
...
Рейтинг: 0 / 0
27.08.2018, 19:59
    #39693950
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Владислав Колосовсервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами.Только загрузить объекты и скомпилировать процедуры. Без данных, потому что DURABILITY = SCHEMA_ONLY
Не, это ненормально, когда сей процесс длится долго, при увеличении размера время растёт, а после некоего порога размера резко прыгает, и затягивается на часы и дни.
a_voroninInMemory любит процессорыА я думаю, программирование любит криворуких программистов.
Видимо, самое правильное, не использовать никакие фичи эдак после 2005го :-)
...
Рейтинг: 0 / 0
27.08.2018, 21:22
    #39693988
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
[quot alexeyvg]Владислав Колосовсервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами.Только загрузить объекты и скомпилировать процедуры. Без данных, потому что DURABILITY = SCHEMA_ONLY
[quot]
да, вот именно поэтому и возникают вопросы


a_voroninInMemory любит процессорыно странною любовью.

одним из выходов выглядит запретить серверу поднимать базы параллельно. но такого способа тоже не нашел
...
Рейтинг: 0 / 0
29.08.2018, 13:43
    #39694935
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakill,

C# тяжко компилируется, это заметно, когда идет новая установка сервера. Он несколько дней GAC пилит по-моему.
...
Рейтинг: 0 / 0
29.08.2018, 13:50
    #39694948
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Владислав КолосовShakill,

C# тяжко компилируется, это заметно, когда идет новая установка сервера. Он несколько дней GAC пилит по-моему.Очевидно, к описанной проблеме это не имеет никакого отношения.
Если один и тот же код компилится разное (в тыщи раз) время, в зависимости от каких то других параметров, то это явный баг программистов, или, в возможно, архитекторов.
...
Рейтинг: 0 / 0
29.08.2018, 16:07
    #39695073
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
alexeyvg,

а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код?
...
Рейтинг: 0 / 0
29.08.2018, 16:57
    #39695109
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Владислав Колосовalexeyvg,

а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код?Я так не решил.

Я разве про это писал?

Ещё раз:
Я написал о том, что если у вас 2 базы, в каждой по одному пустому "ин-мемори" объекту, и в одной бавзе ещё есть табличка с заказами на 100 заказов, а в другой табличка с миллионом счетов-фактур, то эти базы должны стартовать одинаково.
Потому что количество и размер "ин-мемори" объектов одинаковые.

Но почему то вторая база стартует медленнее.

Это было признано МС багом, был выпущен фикс, но в данном случае он не подействовал.
Может, в следующем кумулятивном апдэйте его просто не добавили, может, это потерянный фикс?
...
Рейтинг: 0 / 0
29.08.2018, 17:14
    #39695123
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
alexeyvgВладислав Колосовalexeyvg,

а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код?Я так не решил.

Я разве про это писал?

Ещё раз:
Я написал о том, что если у вас 2 базы, в каждой по одному пустому "ин-мемори" объекту, и в одной бавзе ещё есть табличка с заказами на 100 заказов, а в другой табличка с миллионом счетов-фактур, то эти базы должны стартовать одинаково.
Потому что количество и размер "ин-мемори" объектов одинаковые.

Но почему то вторая база стартует медленнее.

Это было признано МС багом, был выпущен фикс, но в данном случае он не подействовал.
Может, в следующем кумулятивном апдэйте его просто не добавили, может, это потерянный фикс?

Код "нативных процедур" показывали в одном из видосов Майкрософт. Конкретно нативные процедуры компилируются в C++.
...
Рейтинг: 0 / 0
29.08.2018, 17:18
    #39695129
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
a_voroninКод "нативных процедур" показывали в одном из видосов Майкрософт. Конкретно нативные процедуры компилируются в C++.Это как связано с вопросом? Сиквел компилирует счета-фактуры, написанные бухгалтерами на С++ ? :-)
...
Рейтинг: 0 / 0
29.08.2018, 17:19
    #39695130
Rankatan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
a_voroninКонкретно нативные процедуры компилируются в C++.
C++ ведь не низкоуровневый язык как в него может копулироваться. Может преобразовывается в C++ а потом уже компилируется?
...
Рейтинг: 0 / 0
29.08.2018, 17:37
    #39695149
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Rankatana_voroninКонкретно нативные процедуры компилируются в C++.
C++ ведь не низкоуровневый язык как в него может копулироваться. Может преобразовывается в C++ а потом уже компилируется?

Сначала в С++, потом в ассемблер.

На самом деле для С++ уже дано существует сильнейшая оптимизация кода. В том числе ориентированная на конкретные процессоры. Если вы хотите, чтобы было быстро, то пишите на С++.

Вот здесь есть инфа о том, как добраться до кода и как он выглядит.
https://www.mssqltips.com/sqlservertip/3394/debugging-nativelycompiled-stored-procedures-statements/
...
Рейтинг: 0 / 0
29.08.2018, 18:28
    #39695183
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
alexeyvgНо почему то вторая база стартует медленнее.

Это было признано МС багом, был выпущен фикс, но в данном случае он не подействовал.
Может, в следующем кумулятивном апдэйте его просто не добавили, может, это потерянный фикс?

более того, фиксов по похожим проблемам с разными причинами было несколько
https://support.microsoft.com/en-us/help/4055727/recovering-a-database-with-memory-optimized-tables-takes-a-long-time
https://support.microsoft.com/en-hk/help/4090789/in-memory-oltp-database-takes-a-long-time-to-recover-in-sql-server
https://support.microsoft.com/en-us/help/3171001/fix-slow-database-recovery-in-sql-server-2016-due-to-large-log-when-yo
возможно, есть ещё какой-то не покрытый заплатками случай
...
Рейтинг: 0 / 0
29.08.2018, 22:35
    #39695241
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakillболее того, фиксов по похожим проблемам с разными причинами было несколько
...
возможно, есть ещё какой-то не покрытый заплатками случайДа уж...
Тогда только писать про баг, и трясти МС...
...
Рейтинг: 0 / 0
29.08.2018, 22:49
    #39695242
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
ShakillВ связи с этим два вопроса:
1. как это лечится?Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы.
Получится хоть как то решить проблему, пока МС будет править баг :-)
...
Рейтинг: 0 / 0
29.08.2018, 22:54
    #39695244
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
alexeyvgили как то автоматизироватьНапример, попробовать половить серверным триггером на событие DROP_EVENT_SESSION, для дефаултной сессии...
В общем, тут придётся подумать...
...
Рейтинг: 0 / 0
29.08.2018, 23:06
    #39695246
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakill2. так как базы по одной из offline стартовать можно относительно быстро, есть ли способ после выключения сервера указать ему, чтобы на старте некоторые базы сервер сразу выводил в offline?Можно сделать отдельный мастер файл, с нужными базами в оффлайн, и стартовать сервер с ним (опции -d, -l).
Но, конечно, тогда придётся возиться с поддержкой его правильной версии.
...
Рейтинг: 0 / 0
04.09.2018, 14:55
    #39697809
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
alexeyvgShakillВ связи с этим два вопроса:
1. как это лечится?Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы.
Получится хоть как то решить проблему, пока МС будет править баг :-)
если перезагрузка плановая, то это решается выведением баз в оффлайн перед выключением сервера
а вот если с сервером что-то случилось, то выходит, что момент упущен и получаем долгий старт
спасибо за вариант с мастерфайлом, посмотрю, насколько это может быть удобно в использовании
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.12.2020, 03:49
    #40024119
GlebZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база с таблицами InMemory долго стартует
Shakill
alexeyvgпропущено...
Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы.
Получится хоть как то решить проблему, пока МС будет править баг :-)

если перезагрузка плановая, то это решается выведением баз в оффлайн перед выключением сервера
а вот если с сервером что-то случилось, то выходит, что момент упущен и получаем долгий старт
спасибо за вариант с мастерфайлом, посмотрю, насколько это может быть удобно в использовании
А смысл? Потом их надо обратно в онлайн и они точно также будут recovering.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / база с таблицами InMemory долго стартует / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]