|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Приветствую Есть такая проблема, при наличии в базе таблиц InMemory (DURABILITY = SCHEMA_ONLY) значительно увеличивается время начального включения базы. Например, база размером в 500 Мб с файловой группой Inmemory (160 пустых таблиц) объемом 30 Мб стартует 11-12 секунд; если дропнуть inmemory таблицы, то практически мгновенно. Ситуация ухудшается, если на инстансе несколько таких баз и recovery происходит параллельно. До трех баз время старта сервера растёт линейно, начиная с четырех - растёт сразу до десятков минут (на более крупных базах - до часов). Пока базы не пришли в онлайн, sql server занимает cpu максимально, до 100%. Память свободная при этом есть Код: plaintext
В связи с этим два вопроса: 1. как это лечится? 2. так как базы по одной из offline стартовать можно относительно быстро, есть ли способ после выключения сервера указать ему, чтобы на старте некоторые базы сервер сразу выводил в offline? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2018, 19:05 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2018, 20:57 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
invm https://support.microsoft.com/en-us/help/4090789/in-memory-oltp-database-takes-a-long-time-to-recover-in-sql-server 2017 (RTM-CU9) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2018, 22:02 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakill, Там еще TF 9944 упомянут. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2018, 22:45 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Не заметил, что TF 9944 не помог... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2018, 22:45 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
помогло добавить на виртуалку много ядер, чтоб их стало больше, чем таких баз на инстансе; время старта снова стало примерно как сумма восстановления отдельных баз. но решение явно не во всех случаях подойдет и не закрыт вопрос с тем, что база с inmemory таблицами сама по себе стартует существенно дольше, чем без них ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2018, 17:55 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakill, сервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 13:26 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakillпомогло добавить на виртуалку много ядер, чтоб их стало больше, чем таких баз на инстансе; время старта снова стало примерно как сумма восстановления отдельных баз. но решение явно не во всех случаях подойдет и не закрыт вопрос с тем, что база с inmemory таблицами сама по себе стартует существенно дольше, чем без них InMemory любит процессоры ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 14:41 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Владислав Колосовсервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами.Только загрузить объекты и скомпилировать процедуры. Без данных, потому что DURABILITY = SCHEMA_ONLY Не, это ненормально, когда сей процесс длится долго, при увеличении размера время растёт, а после некоего порога размера резко прыгает, и затягивается на часы и дни. a_voroninInMemory любит процессорыА я думаю, программирование любит криворуких программистов. Видимо, самое правильное, не использовать никакие фичи эдак после 2005го :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 19:59 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
[quot alexeyvg]Владислав Колосовсервер же должен отгрузить объекты и данные с диска память и скомпилировать процедуры, как я понимаю. Не просто сервис запустить и ждать команд, как с физическими таблицами.Только загрузить объекты и скомпилировать процедуры. Без данных, потому что DURABILITY = SCHEMA_ONLY [quot] да, вот именно поэтому и возникают вопросы a_voroninInMemory любит процессорыно странною любовью. одним из выходов выглядит запретить серверу поднимать базы параллельно. но такого способа тоже не нашел ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2018, 21:22 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakill, C# тяжко компилируется, это заметно, когда идет новая установка сервера. Он несколько дней GAC пилит по-моему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:43 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Владислав КолосовShakill, C# тяжко компилируется, это заметно, когда идет новая установка сервера. Он несколько дней GAC пилит по-моему.Очевидно, к описанной проблеме это не имеет никакого отношения. Если один и тот же код компилится разное (в тыщи раз) время, в зависимости от каких то других параметров, то это явный баг программистов, или, в возможно, архитекторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:50 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
alexeyvg, а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 16:07 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Владислав Колосовalexeyvg, а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код?Я так не решил. Я разве про это писал? Ещё раз: Я написал о том, что если у вас 2 базы, в каждой по одному пустому "ин-мемори" объекту, и в одной бавзе ещё есть табличка с заказами на 100 заказов, а в другой табличка с миллионом счетов-фактур, то эти базы должны стартовать одинаково. Потому что количество и размер "ин-мемори" объектов одинаковые. Но почему то вторая база стартует медленнее. Это было признано МС багом, был выпущен фикс, но в данном случае он не подействовал. Может, в следующем кумулятивном апдэйте его просто не добавили, может, это потерянный фикс? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 16:57 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
alexeyvgВладислав Колосовalexeyvg, а почему Вы решили, что нативные процедуры и "ин-мемори" объекты не компилируются в CLR код?Я так не решил. Я разве про это писал? Ещё раз: Я написал о том, что если у вас 2 базы, в каждой по одному пустому "ин-мемори" объекту, и в одной бавзе ещё есть табличка с заказами на 100 заказов, а в другой табличка с миллионом счетов-фактур, то эти базы должны стартовать одинаково. Потому что количество и размер "ин-мемори" объектов одинаковые. Но почему то вторая база стартует медленнее. Это было признано МС багом, был выпущен фикс, но в данном случае он не подействовал. Может, в следующем кумулятивном апдэйте его просто не добавили, может, это потерянный фикс? Код "нативных процедур" показывали в одном из видосов Майкрософт. Конкретно нативные процедуры компилируются в C++. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:14 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
a_voroninКод "нативных процедур" показывали в одном из видосов Майкрософт. Конкретно нативные процедуры компилируются в C++.Это как связано с вопросом? Сиквел компилирует счета-фактуры, написанные бухгалтерами на С++ ? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:18 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
a_voroninКонкретно нативные процедуры компилируются в C++. C++ ведь не низкоуровневый язык как в него может копулироваться. Может преобразовывается в C++ а потом уже компилируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:19 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Rankatana_voroninКонкретно нативные процедуры компилируются в C++. C++ ведь не низкоуровневый язык как в него может копулироваться. Может преобразовывается в C++ а потом уже компилируется? Сначала в С++, потом в ассемблер. На самом деле для С++ уже дано существует сильнейшая оптимизация кода. В том числе ориентированная на конкретные процессоры. Если вы хотите, чтобы было быстро, то пишите на С++. Вот здесь есть инфа о том, как добраться до кода и как он выглядит. https://www.mssqltips.com/sqlservertip/3394/debugging-nativelycompiled-stored-procedures-statements/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 17:37 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
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 возможно, есть ещё какой-то не покрытый заплатками случай ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 18:28 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakillболее того, фиксов по похожим проблемам с разными причинами было несколько ... возможно, есть ещё какой-то не покрытый заплатками случайДа уж... Тогда только писать про баг, и трясти МС... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 22:35 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
ShakillВ связи с этим два вопроса: 1. как это лечится?Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы. Получится хоть как то решить проблему, пока МС будет править баг :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 22:49 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
alexeyvgили как то автоматизироватьНапример, попробовать половить серверным триггером на событие DROP_EVENT_SESSION, для дефаултной сессии... В общем, тут придётся подумать... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 22:54 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakill2. так как базы по одной из offline стартовать можно относительно быстро, есть ли способ после выключения сервера указать ему, чтобы на старте некоторые базы сервер сразу выводил в offline?Можно сделать отдельный мастер файл, с нужными базами в оффлайн, и стартовать сервер с ним (опции -d, -l). Но, конечно, тогда придётся возиться с поддержкой его правильной версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 23:06 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
alexeyvgShakillВ связи с этим два вопроса: 1. как это лечится?Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы. Получится хоть как то решить проблему, пока МС будет править баг :-) если перезагрузка плановая, то это решается выведением баз в оффлайн перед выключением сервера а вот если с сервером что-то случилось, то выходит, что момент упущен и получаем долгий старт спасибо за вариант с мастерфайлом, посмотрю, насколько это может быть удобно в использовании ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 14:55 |
|
база с таблицами InMemory долго стартует
|
|||
---|---|---|---|
#18+
Shakill alexeyvgпропущено... Если это действительно критично для бизнеса, можно дропать таблицы перед перезагрузкой (вручную, или как то автоматизировать), и создавать при старте базы. Получится хоть как то решить проблему, пока МС будет править баг :-) если перезагрузка плановая, то это решается выведением баз в оффлайн перед выключением сервера а вот если с сервером что-то случилось, то выходит, что момент упущен и получаем долгий старт спасибо за вариант с мастерфайлом, посмотрю, насколько это может быть удобно в использовании А смысл? Потом их надо обратно в онлайн и они точно также будут recovering. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2020, 03:49 |
|
|
start [/forum/topic.php?fid=46&msg=39697809&tid=1685338]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 303ms |
total: | 471ms |
0 / 0 |