Имеется проблема в БД Dashboard, когда при синхронизации данных у пользователей выскакивает ошибка, видимая в Error.log как
2022-02-02 09:53:57.65 spid153 Error: 8623, Severity: 16, State: 1.
2022-02-02 09:53:57.65 spid153 The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.
Саша Х. из поддержки приложений лечит ее при помощи ребилда не-уникального не-кластерного индекса каждое утро.
Была мысль сделать секционирование, но на таблицу из 40 млн. записей, это может быть неправильным.
И сегодня я обнаружил две устаревшие auto-created статистики по таблице, которая принимает участие в проблемных запросах Dashboard.
И так я собрал статистику по ним при помощи статьи https://www.sqlshack.com/sql-server-statistics-and-how-to-perform-update-statistics-in-sql/
всего ушло на одну 30 сек., на другую 270 сек. CPU time
Посмотрим проявится ли ошибка завтра.
-- Список всех статистик по таблице [dbo].[logical_values]
SELECT sp.stats_id,
name,
filter_definition,
last_updated,
rows,
rows_sampled,
steps,
unfiltered_rows,
modification_counter
FROM sys.stats AS stat
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = OBJECT_ID('[dbo].[logical_values]')
order by last_updated;
-- We see two old AUTO Created statistics
-- logical_id statistics
-- [_WA_Sys_00000002_5BE2A6F2]
-- extra_id statistics
-- [_WA_Sys_00000005_5BE2A6F2]
-- Let's update these OLD statistics with FULL SCAN
set statistics io on;
set statistics time on;
-- update statistics on extra_id column
Update STATISTICS [dbo].[logical_values] _WA_Sys_00000005_5BE2A6F2 WITH FULLSCAN;
---SQL Server Execution Times:
---- CPU time = 25640 ms, elapsed time = 28841 ms.
-- update statistics on logical_id column
Update STATISTICS [dbo].[logical_values] _WA_Sys_00000002_5BE2A6F2 WITH FULLSCAN;
-- SQL Server Execution Times:
-- CPU time = 27516 ms, elapsed time = 29202 ms.