1.一块磁盘单独存放tempdb文件,并将tempdb分64个数据文件(按CPU核数),一个日志文件(有时候tempdb会达到几百G,因为大量关联、临时表和排序会在tempdb中进行,此处用不用2块磁盘做raid0?)。
绝对不要这样做,过多文件会导致上下文切换开销严重,按照某些MVP和国外专家的建议,先用4个数据文件,如果不够,再加4个,也就是4个4个加,每个设大一点其实足够了。tempdb可以用RAID 0,加快读写速度,而且这个库数据不重要。性能才是总要的。
2.一块磁盘单独存放数据库日志文件。
日志文件很重要,最好做个RAID 10,这个在提供冗余前提下,能够最大化写操作,日志最重要是写操作。
3.将其余的8块硬盘做raid5,放操作系统、应用程序、数据库数据文件(数据文件会达到几T)。
应用程序别放同一个服务器,数据文件放到RAID 5上,提高读的性能,如果性能足够高,其实是否并行读取并不非常重要,操作系统文件也最好放到上面,毕竟操作系统的读写没有数据库的频繁。

解决方案 »

  1.   

    http://wenku.baidu.com/link?url=vNzV3KcYwqh82kujzJEFezDqydgiIgdTR2w546Sctl5oc6XeHTX7jthrwdMYJu9n79y8m4-Wljfs-6IAIRhghparu_UNh4YAQYMYSCO7X-u
      

  2.   

    你可能被误导了。tempdb的数据文件确实按照逻辑CPU来配置,但是最多不能超过8个,官网非常明确。
    tempdb放在RAID0上面,实践中发现效果很不错。
    与RAID5的读比RAID1慢,RAID5的写跟RAID1差不多的速度(都是同时写2次,RAID1写的是扇区,RAID5写的是消耗CPU之后得到的校验码)。
      

  3.   

    考虑到后期你的数据量会有扩展,建议用2个硬盘做RAID 0,专门存储临时库。剩余的8个硬盘都做RAID 5(本身就是RAID 0和1的折中方案),然后日志和库一起存储,也就是哪个库的日志文件就和哪个库存放在同一个物理地址。
      

  4.   

    现在有一台服务器,64核CPU、64G内存、10块1T硬盘。楼主你的服务器 CPU很多啊。。但是 硬盘咋感觉少了呢?!1.用2个硬盘做RAID 0 存储tempdb (前期建立8个就够了,后面再看情况再加)
    2.其他硬盘做 RAID10 存储其他数据了..
      

  5.   

    RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。RAID0运行时只要其中任一块硬盘出现问题就会导致整个数据的故障。一般不建议企业用户单独使用。建议的服务器磁盘规划:
    1-2   --> raid1 --> 安装windows + 部分系统数据库: master,model,msdb ..
    3-8   --> raid5 --> 系统数据库tempdb + 用户数据库之数据文件(.mdf).
    9-10  --> raid1 --> 用户数据库之日志文件(.ldf).
      

  6.   

    如果你并发不大(数百数千数万的),没必要把临时文件设那么多
    如果是专用数据库机器,那么OS、TEMPDB、MASTER等可以放在一个RAID1上
    日志RAID1
    剩下的如果磁盘空间足够,也建议RAID1,而不是RAID5
    再细一点,如果一些表的更新频率高,那么将其拆分到两个(多个)独立的RAID上,也是拆分IO的效果
    或者将数据与索引分离到不同的RAID上,也是拆分IO的效果
    重点是系统设计要有效率,否则可能一个简单的查询可能都累死机器一阵子真是负荷较大的应用,楼主要玩转,应该比较吃力
    即使别人提供很多技巧或答案
    毕竟所涉及的基础知识太多了点
      

  7.   

    谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
      

  8.   

    请教下
    1.将多个数据文件放在多个磁盘做的raid下和分别放在不同的物理磁盘上是不是有什么区别?
    2.一台电脑是否可以做多个raid,并且有的磁盘不做raid用。
      

  9.   

    建议:
    服务器系统raid0,
    tempdb raid0,
    日志raid 10
    数据库raid 10,
    总共需要12块硬盘。
    10块硬盘明显不够做。
      

  10.   

    服务器系统系统放raid0的话万一硬盘出问题整个系统不是就崩溃了。
      

  11.   

    谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
    加班加疯了,没看到你提问,
    第一个问题:4个貌似是“最佳实践”,但是过多会引起上下文切换的问题,CPU管理难度增加,
    第二个问题:微软的那个建议是在非RAID情况下的,如果你做了RAID,其实不用过于在意这些,数据文件放到RAID5上即可。当然要监控一下。
    第三个问题:如果你的RAID有几个,而且性能相同,可以分开来放。
      

  12.   

    服务器系统系统放raid0的话万一硬盘出问题整个系统不是就崩溃了。RAID 0一般建议存tempdb的文件,其他文件不建议
      

  13.   

    服务器系统系统放raid0的话万一硬盘出问题整个系统不是就崩溃了。如果硬盘出问题,最多只是重装系统,而且数据库出问题,那事情就麻烦了。
      

  14.   

    谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
    加班加疯了,没看到你提问,
    第一个问题:4个貌似是“最佳实践”,但是过多会引起上下文切换的问题,CPU管理难度增加,
    第二个问题:微软的那个建议是在非RAID情况下的,如果你做了RAID,其实不用过于在意这些,数据文件放到RAID5上即可。当然要监控一下。
    第三个问题:如果你的RAID有几个,而且性能相同,可以分开来放。
    您的意思是如果做了RAID的话,就可以只分一个数据文件(.mdf/.ndf),但是一个文件好像不能完全利用CPU的性能,多个文件的话,似乎可以多线程并发处理;
    如果不做RAID是不是可以把多个文件放在多个物理磁盘上?
    那把一个文件放在RAID上,和把多个文件分别放在没做raid的多个磁盘上那个效率更高呢?
      

  15.   

    1、不是一定要并行才快,单次足够快的话也是可以的,当然,如果能并行也不是坏事,不过并行容易导致线程的混乱,所以不建议文件拆的过多,特别是tempdb。
    2、不过RAID的话,可以把文件放在独立的物理磁盘,如果你的RAID性能做得好,不拆文件也行,不过最好测试一下,我以前做银行系统,文件单独一个盘,效果还是不行,但是做了RAID之后,由于盘数量有限,被迫把文件全部迁到RAID5上,但是性能却明显快了很多谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
    加班加疯了,没看到你提问,
    第一个问题:4个貌似是“最佳实践”,但是过多会引起上下文切换的问题,CPU管理难度增加,
    第二个问题:微软的那个建议是在非RAID情况下的,如果你做了RAID,其实不用过于在意这些,数据文件放到RAID5上即可。当然要监控一下。
    第三个问题:如果你的RAID有几个,而且性能相同,可以分开来放。
    您的意思是如果做了RAID的话,就可以只分一个数据文件(.mdf/.ndf),但是一个文件好像不能完全利用CPU的性能,多个文件的话,似乎可以多线程并发处理;
    如果不做RAID是不是可以把多个文件放在多个物理磁盘上?
    那把一个文件放在RAID上,和把多个文件分别放在没做raid的多个磁盘上那个效率更高呢?
      

  16.   

    window对单个文件的大小好像是有限制的,好像不能超过2T,如果不拆分文件,是不是就会有问题
    谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
    加班加疯了,没看到你提问,
    第一个问题:4个貌似是“最佳实践”,但是过多会引起上下文切换的问题,CPU管理难度增加,
    第二个问题:微软的那个建议是在非RAID情况下的,如果你做了RAID,其实不用过于在意这些,数据文件放到RAID5上即可。当然要监控一下。
    第三个问题:如果你的RAID有几个,而且性能相同,可以分开来放。
    您的意思是如果做了RAID的话,就可以只分一个数据文件(.mdf/.ndf),但是一个文件好像不能完全利用CPU的性能,多个文件的话,似乎可以多线程并发处理;
    如果不做RAID是不是可以把多个文件放在多个物理磁盘上?
    那把一个文件放在RAID上,和把多个文件分别放在没做raid的多个磁盘上那个效率更高呢?
      

  17.   

    谢谢版主回复
    1.我在微软的官方建议中(http://msdn.microsoft.com/zh-cn/library/ms175527.aspx)看到的是建议是为服务器中的每一个 CPU 创建一个tempdb的数据文件,不知道官方说的是不是合理;还有就是先设置4个文件的依据是什么,为什么是4个?
    2.微软的建议还有把数据文件也分多个放在不同的物理磁盘上,可以避免I/O竞争,提高并发性,但是做我raid之后,在window中就只能看到一个磁盘,怎么把多个文件放在不同的磁盘中的?还是做的raid之后就一个数据文件就行了?如果放多个的话几个合适呢?
    加班加疯了,没看到你提问,
    第一个问题:4个貌似是“最佳实践”,但是过多会引起上下文切换的问题,CPU管理难度增加,
    第二个问题:微软的那个建议是在非RAID情况下的,如果你做了RAID,其实不用过于在意这些,数据文件放到RAID5上即可。当然要监控一下。
    第三个问题:如果你的RAID有几个,而且性能相同,可以分开来放。
    您的意思是如果做了RAID的话,就可以只分一个数据文件(.mdf/.ndf),但是一个文件好像不能完全利用CPU的性能,多个文件的话,似乎可以多线程并发处理;
    如果不做RAID是不是可以把多个文件放在多个物理磁盘上?
    那把一个文件放在RAID上,和把多个文件分别放在没做raid的多个磁盘上那个效率更高呢?
    这个限制应该要看版本,因为我公司的数据库超百G一个文件,放在磁盘也没啥问题
      

  18.   

    如果你的预测准确,数据文件有几T,那的确分文件组、分文件会好管理,比较好的方式就是多文件存在多磁盘上,但是毕竟创建RAID会消耗磁盘数量,所以要分开放不见得好。我上面提到的什么文件放在什么RAID上,上面即使多放几个同类型的文件,其实也无妨,这些技术还不知道支持不了
      

  19.   

    我的实践来看,楼主完全可以用一个固态硬盘存放tempdb,比raid的读写效率都发
      

  20.   

    我说的不光tempdb的文件,还有用户的数据文件。全部用固态硬盘成本可能有点高
      

  21.   

    数据就放在机械硬盘中算了,全部用SSD的确成本很高的,因为你有大量的临时表和排序,这些数据都会在tempdb中产生,而且频繁写入tempdb很影响正常数据的读写的,所以出于成本、数据安全性、性能的综合考虑,只要将tempdb用SSD存储就可以了,数据文件该用机械硬盘做阵列就行了