1, 一般的数据库选项:auto update statistics和auto create statistics都是打勾的,这两个今天具体意义是什么呀
2,这两个参数和维护计划(Maint Plan)里的update statistics used by query optimizer.有什么关系;如果要做这个维护,后面sample应该设置多少?谢谢各位!
2,这两个参数和维护计划(Maint Plan)里的update statistics used by query optimizer.有什么关系;如果要做这个维护,后面sample应该设置多少?谢谢各位!
Auto create statistics
Specify that any missing statistics needed by a query for optimization are built automatically during optimization.
翻译: 明确规定,任何查询最优化所需要但是缺少的统计信息在最优化过程中会被自动产生 。
Auto update statistics
Specify that out-of-date statistics needed by a query for optimization are built automatically during optimization
翻译: 查询最优化所需要的旧的统计信息在优化过程中被自动产生 。
我们的数据库超过100GB了,用户多时很慢,几个月做一次reindex,但是效果不明显;最近想做update statistics used by query optimizer,但是不太明白这个作用,以及和auto create/update statistics参数的关系?
BACKUP DATABASE testdb TO DISK='d:\data\testdb20070906.bak'
--清空日志
DUMP TRANSACTION testdb WITH NO_LOG
--截断事务日志
BACKUP LOG testdb WITH NO_LOG
--收缩数据库
DBCC SHRINKDATABASE(testdb)
--设置自动收缩
EXEC SP_DBOPTION testdb,AUTOSHRINK,TRUE整理一下!
AUTO_UPDATE_STATISTICS是让数据库自生更新统计信息统计信息统计了数据的分布信息.密度.等.能帮助查询优化器生成良好的查询计划.如果没有打开这两个选项.而自行又没有有效的创建和更新统计信息的话,
那查询优化器可能就不能提供最佳的查询计划了.
liangck, 那就是只有AUTO_CREATE_STATISTICS、AUTO_UPDATE_STATISTICS打勾了才能做update statistics used by query optimizer了?
启用 AUTO_UPDATE_STATISTICS 选项让查询优化器在优化查询时,自动更新相关索引的过时的统计信息。维护计划中的更新统计信息任务是更新指定数据库,指定表或索引视图的统计信息。其中,sample 指的是生成统计信息所需要的采样率/行,即从表中抽取多少行来生成统计信息。full scan 指的是根据表中所有行来生成统计信息。具体如何生成和更新统计信息,如何使用采样行来生成统计信息,查询优化器如何使用统计信息选择执行计划,不是简单几句可以说明白。
只要记住,统计信息对于查询优化器选择执行计划非常重要;采样率越高,统计信息所反映表和索引的信息(索引列和非索引列的密度)就越精确,但是生成统计信息所需的代价会越高。
xman_78tom兄弟,谢谢你耐心的讲解。
还有一个问题:“但是你也可以随意设置(大表设置小一些,小表设置大一些)”,在维护计划里面,没有看到可以针对某个表来优化呀,好象只能对整个数据库做update statistics used by query optimizer。你说的情况是SQL2005吗?我当前的数据库是SQL2000
在 sql2000 中,你可以将 sample 设置为 1,这样数据库引擎就会自动根据表当前的行数确定合适的 sample 值了。
xman_78tom兄弟,一般在什么时候需要执行update statistics used by query optimizer呢?或者有频率方面的要求吗?