我有一个自过去7年以来运行的网站,对于后端数据库,我们使用的是Sql Server 2008,最近我们已经在Sql Server 2014上迁移。
现在有一天,我们面临着一些问题,例如只有一些页面突然出现缓慢。 我想知道这是否是由于表格上的统计数据,这是在慢速页面中使用的。根据{{3}}博客文章,建议删除所有现有统计信息,因为我们的数据库也逐渐执行了很多CRUD操作和表定义的更改。
请注意,我已将自动更新统计信息设置为开。
那么我是否必须删除所有统计数据该怎么办?如果是,那么对我当前的Web应用程序的性能影响是什么?有没有其他方法来识别缓慢问题,这种问题确实逐渐没有死锁或阻塞条件?
答案 0 :(得分:0)
此查询获取所有未使用的索引和统计信息。为了优化您的数据库,您需要分析和调整数据库:
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