这篇文章主要介绍“Sqlserver关于统计信息自动创建自动更新的知识点有哪些”,在日常操作中,相信很多人在Sqlserver关于统计信息自动创建自动更新的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Sqlserver关于统计信息自动创建自动更新的知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
SSMS右键数据库--Properties--Options--Automatic下面会出现和统计信息相关的几个选项,和sys.databases视图的is_auto_create_stats_on,is_auto_create_stats_incremental_on,is_auto_update_stats_on,is_auto_update_stats_async_on这几个字段一一对应
AUTO_CREATE_STATISTICS
在自动创建统计信息选项 AUTO_CREATE_STATISTICS 为 ON 时,查询优化器将根据需要在查询谓词中的单独列上创建统计信息,以便改进查询计划的基数估计。这些单列统计信息在现有统计信息对象中尚未具有直方图的列上创建。 AUTO_CREATE_STATISTICS 选项不确定是否为索引创建了统计信息。 此选项也不生成筛选统计信息。 它严格应用于全表的单列统计信息。
查询优化器通过使用 AUTO_CREATE_STATISTICS 选项创建统计信息时,统计信息名称以 _WA 开头。 可以使用下面的查询来确定查询优化器是否为查询谓词列创建了统计信息。
SELECT OBJECT_NAME(s.object_id) AS object_name,
COL_NAME(sc.object_id, sc.column_id) AS column_name,
s.name AS statistics_name
FROM sys.stats AS s
INNER JOIN sys.stats_columns AS sc
ON s.stats_id = sc.stats_id AND s.object_id = sc.object_id
WHERE s.name like '_WA%'
ORDER BY s.name;
AUTO_UPDATE_STATISTICS
在自动更新统计信息选项 AUTO_UPDATE_STATISTICS 为 ON 时,查询优化器将确定统计信息何时可能过期,查询优化器通过计算自最后统计信息更新后数据修改的次数并且将这一修改次数与某一阈值进行比较,确定统计信息何时可能过期。 该阈值基于表中或索引视图中的行数。
SQL Server 2014 (12.x),SQL Server 基于更改行的百分比使用阈值。 这与表中的行数无关。 阈值是:
如果在评估时间统计信息时表基数为 500 或更低,则每达到 500 次修改时更新一次。
如果在评估时间统计信息时表基数大于 500,则每达到 500 + 修改次数的百分之二十时更新一次。
SQL Server 2016 (13.x) 开始,如果数据库兼容性级别为 130,SQL Server 将使用递减的动态统计信息更新阈值,此阈值将根据表中的行数进行调整。 它的计算方式为 1000 与当前的表基数乘积的平方根。 例如,如果表中包含 200 万行,则计算为 sqrt (1000 * 2000000) = 44721.359。 进行此更改后,将会更频繁地更新大型表的统计信息。 但是,如果数据库的兼容性级别低于 130,则适用 SQL Server 2014 (12.x) 阈值。
AUTO_UPDATE_STATISTICS_ASYNC
异步统计信息更新选项 AUTO_UPDATE_STATISTICS_ASYNC 将确定查询优化器是使用同步统计信息更新还是异步统计信息更新。 默认情况下,异步统计信息更新选项为 OFF 状态,并且查询优化器以同步方式更新统计信息。
到此,“Sqlserver关于统计信息自动创建自动更新的知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。