问题一、由于我对SAN+RAID一知半解,对分区也一知半解。故如题所问。
问题二、能否对不同分区上的索引的填充因子设置不同的值,如:历史数据填充因子为100,而OLTP数据填充因子为60?
问题三、如果有表分区,对表对齐的聚集索引来说,增删改的维护索引的量是否就变小了?能否这样理解

解决方案 »

  1.   

    SAN NAS Raid 的区别与应用
    如何增加磁盘的存取速度,如何防止数据因磁盘的故障而丢失及如何有效的利用磁盘空间,一直是电脑专业人员和用户的困扰,而大容量磁盘的价格非常昂贵,对用户形成很大的负担。磁盘阵列技术的产生一举解决了这些问题。 过去十几年来,CPU的处理速度增加了五十多倍,内存的存取速度也大幅增加,而数据储存装置--主要是磁盘--的存取速度只增加了三、四倍,形成电脑系统的瓶颈,拉低了电脑系统的整体性能,若不能有效的提升磁盘的存取速度,CPU、内存及磁盘间的不平衡将使CPU及内存的改进形成浪费。 磁盘阵列中针对不同的应用使用的不同技术,称为RAID 等级。RAID是Redundant Array of Inexpensive Disks的缩写,而每一等级代表一种技术。目前业界最经常应用的RAID等级是RAID 0~RAID 5。这个等级并不代表技术的高低,RAID 5并不高于RAID 3。至于要选择那一种RAID 等级的产品,纯视用户的操作环境及应用而定,与等级的高低没有必然的关系。 RAID级别的划分? 目前业界最经常应用的RAID等级是RAID 0~RAID 5。下面将简单描述一些常用的RAID等级,澄清一些应用的问题: 
    RAID 0(Striped Disk Array without Fault Tolerance) 
    RAID 0是把所有的硬盘并联起来成为一个大的硬盘组。其容量为所有属于这个组的硬盘的总和。所有数据的存取均以并行分割方式进行。由于所有存取的数据均以平衡方式存取到整组硬盘里,存取的速度非常快。越是多硬盘数量的RAID 0阵列其存取的速度就越快。容量效率方面也是所有RAID格式中最高的,达到100%。但RAID 0有一个致命的缺点–就是它跟普通硬盘一样没有一点的冗余能力。一旦有一个硬盘失效时,所有的数据将尽失。没法重组回来!一般来讲,RAID 0只用于一些已有原数据载体的多媒体文件的高速读取环境。如视频点播系统的数据共享部分等。RAID 0只需要两个或以上的硬盘便能组成。如下图所示: 
    RAID 1(Mirroring) 
    RAID 1是硬盘镜像备份操作。由两个硬盘所组成。其中一个是主硬盘而另外一个是镜像硬盘。主硬盘的 数据会不停的被镜像到另外一个镜像硬盘上。由于所有主硬盘的数据会不停地镜像到另外一个硬盘上, 故RAID 1具有很高的冗余能力。达到最高的100%。可是正由于这个镜像做法不是以算法操作,故它的容量效率非常的低,只有50%。RAID 1只支持两个硬盘操作。容量非常有限,故一般只用于操作系统中。如下图所示: 
    RAID 0+1(Mirroring and Striping) 
    RAID 0+1即由两组RAID 0的硬盘作RAID 1的镜像容错。虽然RAID 0+1具备有RAID 1的容错能力和RAID 0的容量性能。但RAID 0+1的容量效率还是与RAID 1一样只有50%,故同样地没有被普及使用。如下图所示: 
    RAID 3(Striping with dedicated parity) 
    RAID 3在安全方面以奇偶校验(parity check)做错误校正及检测,只需要一个额外的校检磁盘(parity disk)。奇偶校验值的计算是以各个磁盘的相对应位作XOR的逻辑运算,然后将结果写入奇偶校验磁盘, 任何数据的修改都要做奇偶校验计算。如某一磁盘故障,换上新的磁盘后,整个磁盘阵列(包括奇偶校验 磁盘)需重新计算一次,将故障磁盘的数据恢复并写入新磁盘中,如奇偶校验磁盘故障,则重新计算奇偶 校验值,以达容错的要求。如下图所示: 
    RAID 5(Striping with distributed parity) 
    RAID 5也是一种具容错能力的RAID 操作方式,但与RAID 3不一样的是RAID 5的容错方式不应用专用容错硬盘,容错信息是平均的分布到所有硬盘上。当阵列中有一个硬盘失效,磁盘阵列可以从其他的几个硬盘的对应数据中算出已掉失的数据。由于我们需要保证失去的信息可以从另外的几个硬盘中算出来,我们就需要在一定容量的基础上多用一个硬盘以保证其他的成员硬盘可以无误地重组失去的数据。其总容量为(N-1)x最低容量硬盘的容量。从容量效率来讲,RAID 5同样地消耗了一个硬盘的容量,当有一个硬盘失效时,失效硬盘的数据可以从其他硬盘的容错信息中重建出来,但如果有两个硬盘同时失效的话,所有数据将尽失。如下图所示: 
    RAID级别的对比 
    NAS的概念 
    网络存储服务器NAS(Network Attached Storage),是一个专用为提供高性能、低拥有成本和高可靠性的数据保存和传送产品。NAS设备是为提供一套安全,稳固的文件和数据保存,容易使用和管理而设计,其定义为特殊的独立的专用数据存储服务器,内嵌系统软件,可以提供 NFS、SMB/CIFS 文件共享。NAS是基于IP协议的文件级数据存储,支持现有的网络技术,比如以太网、FDDI等。NAS设备完全以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而有效释放带宽,大大提高了网络整体性 能,也可有效降低总拥有成本,保护用户投资。把文件存放在同一个服务器里让不同的电脑用户共享和集合网络里不同种类的电脑正是NAS网络存储的主要功能。正因为NAS网络存储系统应用开放的,工业标准的协议,不同类型的电脑用户运行不同的操作系统可以实现对同一个文件的访问。所以已经不再在意到底是Windows 用户或UNIX用户。他们同样可以安全地和可靠地使用NAS网络存储系统中的数据。 NAS的特点 
    NAS以其流畅的机构设计,具有突出的性能: 
    ·移除服务器 I/O 瓶颈: 
    NAS是专门针对文件级数据存储应用而设计的,将存储设备与服务器完全分离,从而将服务器端数据 I/O瓶颈彻底消除。服务器不用再承担向用户传送数据的任务,更专注于网络中的其它应用,也提高了 网络的整体性能。 ·简便实现 NT与UNIX下的文件共享: 
    NAS支持标准的网络文件协议,可以提供完全跨平台文件混合存储功能。不同操作系统下的用户均可将数据存储一台NAS设备中,从而大大节省存储空间,减少资源浪费。 ·简便的设备安装、管理与维护: 
    NAS设备提供了最简便快捷的安装过程,经过简单的调试就可以流畅应用。一般基于图形界面的管理系 统可方便进行设备的掌控。同样,网络管理员不用分别对设备进行管理,集中化的数据存储与管理, 节省了大量的人力物力。 ·按需增容,方便容量规划: 
    NAS设备可以提供在线扩容能力,大大方便了网络管理员的容量设计。即使应付无法预见的未来存储容 量增长,也显得异常轻松自如。而且,这种数据容量扩充的时候,不用停顿整个网络的服务,这将极大的减少因为停机造成的成本浪费。 ·高可靠性: 
    除了刚才我们提到的因为移除服务器端I/O瓶颈而大大提高数据可用性外,NAS设备还采用多种方式提高数据的可用性、可靠性,比如RAID技术的采用、冗余部件(电源、风扇等)的采用以及容错系统的设计等,当然对于不同的设备,可能也会采用其他更高性能的方式或解决方案。 ·降低总拥有成本: 
    NAS有一个最吸引用户的地方,就是具有极低的总拥有成本. 
    SAN的概念 
    SAN(Storage Area Network,存储区域网),被定义为一个共用的高速专用存储网络,存储设备集中在服务器的后端,因此SAN是专用的高速光纤网络。架构一个真正的SAN,需要接专用的光纤交换机和集线器。存储区域网络是网络体系结构中一种相对新的概念,也是链接服务器和独立于工作网络的在线存储设备的网络。虽然,网络依然在发展过程中,但最重要的 SAN 技术似乎是用于 SCSI 总线连接的光纤通道改进功能。 SAN的优势 
    SAN的优势可以表现在一下几个方面: 
    ·高数据传输速度: 
    以光纤为接口的存储网络SAN提供了一个高扩展性、高性能的网络存储机构。光纤交换机、光纤存储阵列 同时提供高性能和更大的服务器扩展空间,这是以SCSI为基础的系统所缺乏的。同样,为企业今后的应用提供了一个超强的可扩展性。 ·加强存储管理: 
    SAN 存储网络各组成部分的数据不再在以太网络上流通从而大大提高以太网络的性能。正由于存储设备与 服务器完全分离,用户获得一个与服务器分开的存储管理理念。复制、备份、恢复数据趋向和安全的管理 可以中央的控制和管理手段进行。加上把不同的存储池 (Storage Pools)以网络方式连接,企业可以以任 何他们需要的方式访问他们的数据,并获得更高的数据完整性。 ·加强备份/还原能力的可用性: 
    SAN的高可用性是基于它对灾难恢复,在线备份能力和对冗余存储系统和数据的时效切换能力而来。 ·同种服务器的整合: 
    在一个SAN系统中,服务器全连接到一个数据网络。全面增加对一个企业共有存储阵列的连接,高效率和 经济的存储分配可以通过聚合的和高磁盘使用率中获得。 
    综合SAN的优势,它在高性能数据备份/恢复、集中化管理数据及远程数据保护领域得到广泛的应用。 SAN与NAS的比较 
    SAN和NAS是目前最受人瞩目的两种数据存储方式,对两种数据方式的争论也在一直进行着,即使继续发展其他的数据存储方式,也或多或少的和这两种方式存在联系。NAS和SAN有一个共同的特点,就是实现了数据的集中存储与集中管理,但相对于一个存储池来讲,SAN和NAS还是有很大差别的。NAS是独立的文件服务器,存储操作系统不停留在通用服务器端,因此可以实现同一存储池中数据的独享与共享,而SAN中的数据是基于块级的传输,文件系统仍在相应的服务器上,因此对于一个混合的存储池来讲,数据仍是独立存在的,或者说是服务器在独享存储池中的一部分空间。这两个存储方案的最大分别是在于他们的访问方法。SAN存储网络系统是以块(Block)级的方式操作而NAS网络存储系统是以文件(File)级的方式表达。这意味着NAS系统对于文件级的服务有着更高效和快速的性能,而应用数据块(Block)的数据库应用和大数据块(Block)的I/O操作则以SAN为优先。基于SAN和NAS的很大不同,很多人将NAS和SAN绝对的对立起来,就目前的发展观点来看,这一绝对的对立是不能被市场接受的,相反更多的数据存储解决方案趋向于将NAS和SAN进行融合,这是因为: 
    ·一些分散式的应用和用户要求访问相同的数据 
    ·对提供更高的性能,高可靠性和更低的拥有成本的专有功能系统的高增长要求 
    ·以成熟和习惯的网络标准包括TCP/IP, NFS和CIFS为基础的操作 
    ·一个获得以应用为基础而更具商业竞争力的解决方案欲望 
    ·一个全面降低管理成本和复杂性的需求 
    ·一个不需要增加任何人员的高扩展存储系统 
    ·一套可以通过重构划的系统以维持目前拥有的硬件和管理人员的价值 
    由于在一个位置融合了所有存储系统,用户可以从管理效率、使用率和可靠性的全面提高中获得更大的好处。SAN已经成为一个非常流行的存储集中方案,因为光纤通道能提供非常庞大的设备连接数量,连接容易和存储设备与服务器之间的长距离连接能力。同样地,这些优点在NAS系统中也能体验出来。一套会聚SAN和NAS的解决方案全面获得应用光纤通道的能力,从而让用户获得更大的扩展性,远程存储和高性能等优点。同样这种存储解决方案全面提供一套在以块(Block)和文件(File)I/O为基础的高效率平衡功能从而全面增强数据的可用性。应用光纤通道的SAN和NAS,整个存储方案提供对主机的多层面的存储连接、高性能、高价值、高可用和容易维护等优点,全由一个网络结构提供。 
    ----------------- RAID是英文Redundant Array of Inexpensive Disks的缩写,中文简称为廉价磁盘冗余阵列。RAID就是一种由多块硬盘构成的冗余阵列。 虽然RAID包含多块硬盘,但是在操作系统下是作为一个独立的大型存储设备出现。利用RAID技术于存储系统的好处主要有以下三种: 1. 通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能 
    2. 通过把数据分成多个数据块(block)并行写入/读出多个磁盘以提高访问磁盘的速度 
    3. 通过镜像或校验操作提供容错能力 最初开发RAID的主要目的是节省成本,当时几块小容量硬盘的价格总和要低于大容量的硬盘。目前来看RAID在节省成本方面的作用并不明显,但是RAID可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID还可以提供良好的容错能力,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。 RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。根据实际情况选择适当的RAID级别可以满足用户对存储系统可用性、性能和容量的要求。常用的RAID级别有以下几种:NRAID,JbOD,RAID0,RAID1,RAID0+1,RAID3,RAID5等。目前经常使用的是RAID5和RAID(0+1)。
     
      

  2.   


    问题二、能否对不同分区上的索引的填充因子设置不同的值,如:历史数据填充因子为100,而OLTP数据填充因子为60?
    历史填充100是因为基本不会对历史表进行插入和更新,所以不会引起索引碎片。
    而OLTP数据填充因子为60因为这些表经常进行插入更新,为了防止索引分页所以需要每页预留空间。问题三、如果有表分区,对表对齐的聚集索引来说,增删改的维护索引的量是否就变小了?能否这样理解对于表分区表对齐的聚集索引来说聚集索引就是数据,进行删除的时候空间是不会释放的等到重建索引的时候会自动释放。你说这个量是空间么。
      

  3.   


    我说的量是指CPU的量,因为不分区是一个大B 树,分区后是一个小B 树。维护小树肯定是要比维护大树耗资源小,能否这样理解?谢谢东升哥
      

  4.   

    东升哥,对于关键问题,还没回答我呢?表分区主要作用就是为了分担磁盘I/O的问题,如果架设了 SAN +RAID 还有必要表分区吗?
    除了解决I/O瓶颈外,表分区还有哪些其它好处?
      

  5.   

    SAN 没用过。分区表的功能不仅仅是分担磁盘I/O的问题,表的数据管理起来也更能容易。分区表分布在不同的物理硬盘上能提高I/O性能,或者多CPU的情况下可以对表进行并行操作。
      

  6.   

    表的数据管理是指?数据库的备份还原吗?如果程式端设计SQL语句不好,查询表分区时可能还会带来额外的开销。因为还多了跨分区查询然后再合并的过程。现在的服务器一般都是多CPU了,这个确实是个优点。
      

  7.   

    给你个文档看看。讲的很好。
    http://www.sqlskills.com/resources/Whitepapers/Partitioning%20in%20SQL%20Server%202005%20Beta%20II.htm
      

  8.   


    文件分组。。这个是在没钱买RAID的时候用
      

  9.   


    除了I/O优势外,表分区还可以利用并行cpu处理,另外因为分区,内存自然也得到优化。只针对io来说,san raid还是有必要用分区表,原因如下:
    san对于sqlserver的最佳实践有一条就是利用san的Zoning功能,使LUN专用指定磁盘(阵列),来实现对性能的精密控制,比如以此实现对log文件的连续写性能的保证,再比如对分区表文件组所在磁盘的精确定位。这里的思路是:利用sqlserver代替san来管理io。规划的合理的话,2个raid1的性能好于1个raid10。