1, 一般的数据库选项:auto update statistics和auto create statistics都是打勾的,这两个今天具体意义是什么呀
2,这两个参数和维护计划(Maint Plan)里的update statistics used by query optimizer.有什么关系;如果要做这个维护,后面sample应该设置多少?谢谢各位!

解决方案 »

  1.   

    1..
    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
    翻译:    查询最优化所需要的旧的统计信息在优化过程中被自动产生 。 
      

  2.   

    这个是我的问题:这两个参数和维护计划(Maint Plan)里的update statistics used by query optimizer.有什么关系;如果要做这个维护,后面sample应该设置多少? 
    我们的数据库超过100GB了,用户多时很慢,几个月做一次reindex,但是效果不明显;最近想做update statistics used by query optimizer,但是不太明白这个作用,以及和auto create/update statistics参数的关系?
      

  3.   

    --备份数据库
    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整理一下!
      

  4.   

    一般建议启用AUTO_CREATE_STATISTICS和AUTO_UPDATE_STATISTICSAUTO_CREATE_STATISTICS是让数据库自动生成统计信息
    AUTO_UPDATE_STATISTICS是让数据库自生更新统计信息统计信息统计了数据的分布信息.密度.等.能帮助查询优化器生成良好的查询计划.如果没有打开这两个选项.而自行又没有有效的创建和更新统计信息的话,
    那查询优化器可能就不能提供最佳的查询计划了.
      

  5.   

    怎么没有回答到正题上呢?一般的shrink,backup,reindex都有做,现在就update statistics used by query optimizer这个没有做过,不知道auto create/update statistics这两个参数都enable了,是否还需要做?测试了update statistics used by query optimizer需要很长很长的时间,我们是生产环境,没有那么多的时间做。
      

  6.   


    liangck, 那就是只有AUTO_CREATE_STATISTICS、AUTO_UPDATE_STATISTICS打勾了才能做update statistics used by query optimizer了?
      

  7.   

    启用 AUTO_CREATE_STATISTICS 选项让查询优化器在优化查询时,自动生成相关索引的统计信息(如果没有)。
    启用 AUTO_UPDATE_STATISTICS 选项让查询优化器在优化查询时,自动更新相关索引的过时的统计信息。维护计划中的更新统计信息任务是更新指定数据库,指定表或索引视图的统计信息。其中,sample 指的是生成统计信息所需要的采样率/行,即从表中抽取多少行来生成统计信息。full scan 指的是根据表中所有行来生成统计信息。具体如何生成和更新统计信息,如何使用采样行来生成统计信息,查询优化器如何使用统计信息选择执行计划,不是简单几句可以说明白。
    只要记住,统计信息对于查询优化器选择执行计划非常重要;采样率越高,统计信息所反映表和索引的信息(索引列和非索引列的密度)就越精确,但是生成统计信息所需的代价会越高。
      

  8.   

    维护计划是按时更新过时的统计信息,使统计信息保持最新,这可以避免查询优化器在生成执行计划时更新过时的统计信息,从而加速查询。在不影响性能的情况下,采样率应该尽可能的大。但是你也可以随意设置(大表设置小一些,小表设置大一些),因为如果选择的 sample 值过低,数据库引擎会自动根据表当前的行数确定合适的  sample 值。
      

  9.   


    xman_78tom兄弟,谢谢你耐心的讲解。
    还有一个问题:“但是你也可以随意设置(大表设置小一些,小表设置大一些)”,在维护计划里面,没有看到可以针对某个表来优化呀,好象只能对整个数据库做update statistics used by query optimizer。你说的情况是SQL2005吗?我当前的数据库是SQL2000
      

  10.   

    我说的是 sql2005。
    在 sql2000 中,你可以将 sample 设置为 1,这样数据库引擎就会自动根据表当前的行数确定合适的  sample 值了。 
      

  11.   


    xman_78tom兄弟,一般在什么时候需要执行update statistics used by query optimizer呢?或者有频率方面的要求吗?
      

  12.   

    最后回一个贴:如果已经周期性做Reindex了,则不必对整个数据库做statistics used by query optimizer。因为Reindex已经包括了这一步。可以另外对某个表做statistics used by query optimizer