如果我从sql server中的数据库中删除所有统计信息,将会对性能产生什么影响?

问题描述 投票:2回答:1

我有一个自最近7年以来一直运行的网站,对于后端数据库,我们使用的是Sql Server 2008,最近我们迁移到了Sql Server 2014。

现在,仅某些页面突然遇到速度慢的问题。我想知道这是否归因于在慢速页面中使用的表的统计信息。根据SQL Server: Auto Statistics Cleanup博客文章,建议删除所有现有统计信息,因为我们的数据库逐渐执行了许多CRUD操作并更改了表定义。

请注意,我已将自动更新统计信息设置为开。

因此,无论是否必须删除所有统计信息,我该怎么办?如果是,对我当前的Web应用程序的性能会有什么影响?还有没有其他方法可以确定缓慢性问题,而这种缓慢发生又没有死锁或阻塞条件?

sql-server database performance sql-server-2014
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.