|
我先来抛砖引玉:
1、RAID组如何划分,为什么。
OLTP下:当然是RAID10了,如果是50块硬盘的话,分成3个16块盘的RAID10,剩下两块盘做热备盘。
OLAP下,RAID5、RAID10都可以,如果追求空间使用率更高,哪就RAID5。RAID5的写惩罚可能会导致写性能不如RAID10。虽说OLAP下写不如OLTP多,但OLAP通常要有大量数据加载。而且在计算报表中间有可能也会有大量写,我管理过的最忙的一套数据仓库,每天归档最高接近6T。因此写性能如果不高,也会影响OLAP整体的效率。如果不差钱,我觉得OLAP搞成RAID10更好。
2、使用LV还是ASM,或是其他方案,为什么。
如果我来选择,我会选择ASM。因为我对ASM比较了解,而对LVM机制、原理不了解。但LVM已经流行、广范使用十几年,稳定性深入人心,很多大企业使用LVM的还是很多。
我们的核心库,都是使用LVM,还没有升级到ASM。
使用方式,比如有RAID1、RAID2、RAID3共三个RAID组,RAID1有LUN1、LUN2,RAID2有LUN3、LUN4,RAID3有LUN5、LUN6。将LUN1、LUN3、LUN5加到一个VG中,再在这个VG中创建多个跨三个LUN的LV,每个LV不大,10G、20G左右,然后将每个LV直接做为祼设备使用。
这样做的目的,就是保证每个数据文件的空间,被分布在存储所有RAID组、所有磁盘中。
如果用ASM的话,最终目的和LVM一样,也是要让每个数据文件的空间,被分布在存储所有RAID组、所有磁盘中。11G中,可以将LUN1至LUN6全部建到一个大DG中,当然分成多个也可以。比如有一个10G的数据文件,ASM会以AU为单位,将这10G空间,分散到LUN1到LUN6中。如果是10G的ASM,就要注意了,建立DG时磁盘顺序要这样:LUN1,LUN3,LUN5,LUN2,LUN4,LUN6,因为10G是按顺序依次使用的。如果按LUN1、LUN2这样的顺序,数据的分散度不如1、3、5、2、4、6这样更均匀。
ASM其实也很稳定的,主要是要尽量减少Rebalance操作的次数。我所遇到过的ASM DG损坏故障,基本都是在Rebalance时发生的。当然不是每次Rebalance都会有问题,我们曾经向一套OLAP系统大小50T的DG中增、减LUN,Rebalance了快一周,成功完成,没有问题(版本是10G)。只是要了解,Rebalance是有风险的,能不做就不做。
3、LV或ASM层AU、条带、Chunk等如何设置,为什么。
我主要说一下ASM层,OLAP下我建议大AU,条带不用管,用默认值就好。可以考虑4M、8M的AU。8M AU其实并不算特别大的,要知道在区大小为AutoAllocate的表空间下,当段大小大于64M时,一个区就是8M。其实8M的区大小是很常见的,特别是在SYSTEM表空间中,8M大小的区,比比皆是。
OLTP下,我在这届的数据库大会上有总结,大并发的插入,可以考虑改变条带大小,使用小条带。除这种情况外,使用默认的条带设置即可,不会对性能有影响。AU大小,1M,或4M、8M都无所谓,对性能没有太大影响,也可以考虑使用稍大的AU,因此大AU并不会降低OLTP的性能,对于OLTP中偶而出现的大扫描操作,大AU可以提升性能。 |
|