Привет, мы столкнулись с важным падением производительности БД, когда мы перешли с 2008 R2 на 2016. База данных используется в качестве публикации для других серверов, и при ее публикации у нас задержка составляет 2 секунды, когда мы выполняемmsgstr "таблица сценариев как создать ...".Проблема на самом деле не связана с этой операцией, это просто симптомы (потому что она была очень быстрой, прежде чем мы ее опубликовали).Основная проблема заключается в том, что такой же тип запроса выполняется при создании моментального снимка, он проверяет структуру таблицы путем запроса к столбцам sysobjects и sys.all_columns, которые ОЧЕНЬ медленны.
Вот результаты STATISTICS IO:
(13 row(s) affected)
Table 'syssingleobjrefs'. Scan count 53, logical reads 117, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysclsobjs'. Scan count 0, logical reads 26, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysnsobjs'. Scan count 1, logical reads 27, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysschobjs'. Scan count 2, logical reads 62, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysscalartypes'. Scan count 1, logical reads 53, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'syscolpars'. Scan count 1, logical reads 15646, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysobjvalues'. Scan count 15, logical reads 45, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'sysidxstats'. Scan count 13, logical reads 26, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'syscolpars'. Scan count 1, logical reads 4, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'syspalvalues'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
Время выполнения SQL Server: время ЦП = 1343 мс, истекшее время = 1871 мс.
Время выполнения SQL Server: время ЦП = 1937 мс, истекшее время = 2469 мс.Время анализа и компиляции SQL Server: время ЦП = 0 мс, истекшее время = 0 мс.
Время выполнения SQL Server: время ЦП = 0 мс, истекшее время = 0 мс.
Мы можемясно видите, что здесь выполняется множество операций чтения:
Таблица 'syscolpars'.Число сканирований 1, логическое чтение 15646
Эта таблица также может рассматриваться как основной фактор снижения производительности в плане выполнения:
План выполнения
Выможно увидеть его использование кластерного индекса этого syscolpars (системная таблица), и я заметил изменение в этом индексе между 2008 R2 и 2016.
В 2008 R2 кластерные столбцы:
- ColumnName
- ID
В то время как в 2016 году оно изменилось:
- ID
- ColumnName
Так как он больше не кластеризован по имени, он выполняет операцию сканирования индекса CLustered, а в 2008 R2 выполняет операцию поиска кластерного индекса.
Из-за этого для создания снимка требуется 4 часа.возьмите 10 минут против 2008 R2.
sys.syscolpars индексы между 2008 R2 и 2016
У всех есть идеи, почему они устанавливают идентификатор в качестве первого столбца своегоКластерный индекс в этой системной таблице syscolpars?А также как я могу это изменить (Вы не можете редактировать системный индекс).
Спасибо за помощь в понимании этой проблемы!