本帖最后由 nonamehhw 于 2011-12-01 13:46:47 编辑

解决方案 »

  1.   

    这样是不对的虽然微软官方建议一个cpu一个文件 
    ref:http://msdn.microsoft.com/en-us/library/ms175527.aspx#1但是有争议,recommends creating 1⁄4 to 1⁄2 the number of files per CPU
    core, up to a maximum of 8 files, so on an 8-core server you would configure 2 or 4 files
    ref:http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-%281230%29-tempdb-should-always-have-one-data-file-per-processor-core.aspx里面主要讲data files过多会造成轮询分配压力大,多文件自动增长带来的IO问题,lazywrite跨多文件释放buffer pool时造成随机IO,都会降低性能
    我建议你8个数据文件就行了,当然也可以24个数据文件(监控一段时间tempdb的性能)日志文件都是顺序写的,没必要整那么多文件,1个就可以,可以放在独自的磁盘上最后就是初始大小,自动增长的设置了假设你磁盘大小200G, 8个数据文件,每个初始大小20G就可以了,留10%的空间保证磁盘性能。如此就不需要考虑自动增长了
    PS:tempdb只能一个文件组吧。
      

  2.   

    如何测试tempdb性能SQL  Server 2008 Internal and Troubleshooting.pdf这本书有一章专讲tempdb的,讲的很细,可以参考。
      

  3.   

    如果没有多个disk raid, 我认为这样做没有作用.
      

  4.   


    多文件并不是提升IO的performance, 是利用了多个文件就会有多个PFS,GAM,SGAM, 这样可以减少tempdb的页分配竞争。可以去了解下tempdb的工作原理raid,san是另一回事了。
      

  5.   

    看RAID如何配置,业务是啥情况,没有笼统的标准绝大多数环境,配置4个左右就OK了