Почему SQL Server 2017 CU18 намного медленнее, чем CU3, при обновлении и вставке команд (C# application, docker, debian 9/10)? - PullRequest
1 голос
/ 09 февраля 2020

После переноса серверной базы данных 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?

  • У вас есть идеи, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...