После переноса серверной базы данных SQL на новый сервер мы испытали значительное снижение производительности на 30–500% для команд обновления и вставки sql на стороне клиента и выполнили множество конфигураций и тестов, чтобы определить источник проблемы. Оказалось, что это зависит от версии SQL Server 2017: CU3 (быстро) против CU18 (медленно).
Значение: SQL Server 2017 при linux. C# winforms приложения с использованием простого ADO. NET без сущностной структуры. Повторные тесты с Ubuntu 16.04 и Debian 9 и 10 и на двух разных удаленных серверах с контейнером docker и без него. На каждом сервере не выполнялось ни одной другой задачи.
Время измерялось (1) в приложении C# и (2) с использованием функции регрессивных запросов хранилища запросов в SQL Server Management Studio. Увеличение продолжительности произошло только для общего времени, измеренного в C#, следующим образом:
long tStart = DateTime.UtcNow.Ticks;
cmd.ExecuteNonQuery(); // SqlCommand
long tEnd = DateTime.UtcNow.Ticks;
Пример результатов для контейнера debian 10, docker, продолжительность измеряется в C# код:
Update command 1 (updating 3 columns in 1 row for table with 1 row and 86 columns):
CU3: 20 ms
CU18: 92 ms (360 % slower)
Update command 2 (updating 74 columns in 1 row for table with 300 rows and 74 columns):
CU3: 28 ms
CU18: 60 ms (114 % slower)
Длительности, измеренные с использованием хранилища запросов, составляли около 0,3 мс для команды 1 и 0,5 мс для команды 2, независимо от версии SQL сервера CU3 и CU18. Длительность команд выбора не сильно пострадала.
Мои вопросы:
Кто-нибудь еще испытывал такие падения производительности после обновления версии сервера SQL на linux?
У вас есть идеи, почему это происходит?