我有一个自最近7年以来一直运行的网站,对于后端数据库,我们使用的是Sql Server 2008,最近我们迁移到了Sql Server 2014。
现在,仅某些页面突然遇到速度慢的问题。我想知道这是否归因于在慢速页面中使用的表的统计信息。根据SQL Server: Auto Statistics Cleanup博客文章,建议删除所有现有统计信息,因为我们的数据库逐渐执行了许多CRUD操作并更改了表定义。
请注意,我已将自动更新统计信息设置为开。
因此,无论是否必须删除所有统计信息,我该怎么办?如果是,对我当前的Web应用程序的性能会有什么影响?还有没有其他方法可以确定缓慢性问题,而这种缓慢发生又没有死锁或阻塞条件?
此查询获取所有未使用的索引和统计信息。为了优化您的数据库,您需要分析和调整数据库:
SELECT
objects.name AS Table_name,
indexes.name AS Index_name,
dm_db_index_usage_stats.user_seeks,
dm_db_index_usage_stats.user_scans,
dm_db_index_usage_stats.user_updates
FROM
sys.dm_db_index_usage_stats
INNER JOIN sys.objects ON dm_db_index_usage_stats.OBJECT_ID = objects.OBJECT_ID
INNER JOIN sys.indexes ON indexes.index_id = dm_db_index_usage_stats.index_id AND dm_db_index_usage_stats.OBJECT_ID = indexes.OBJECT_ID
WHERE
indexes.is_primary_key = 0 --This line excludes primary key constarint
AND
indexes. is_unique = 0 --This line excludes unique key constarint
AND
dm_db_index_usage_stats.user_updates <> 0 -- This line excludes indexes SQL Server hasn’t done any work with
AND
dm_db_index_usage_stats. user_lookups = 0
AND
dm_db_index_usage_stats.user_seeks = 0
AND
dm_db_index_usage_stats.user_scans = 0
ORDER BY
dm_db_index_usage_stats.user_updates DESC