假定给你一台存储,这个存储上面有16个raid组(就假定是raid10),现在,将要有4台不同应用(Oracle数据库)的主机连接到这台存储,我们又假定4台应用的负载相差不大,数据量也相差不大,你会怎么分配这16个raid组?
一般来说,想到的是以下2种常见的分配方法:
规则一:4个数据库都可以访问所有的raid组,但是每个数据库只能访问其中的1/4。
规则二:因为有16个RAID组,最简单,每个数据库分4个RAID组,互不干涉。
如图:
支持规则1的人说,因为每个数据库都可以访问到所有的RAID组,数据打散到所有的磁盘上,当一个数据库忙的时候,就可以充分利用所有的资源。
支持规则2的人说,太打散不好,看不到热点,数据不集中,不利于存储的cache有效命中,一个库会拖累其它的数据库,造成大家都慢。
可能上面有点难理解的就是不利于存储cache命中了,不过我这里可以稍微解释一下,现在的存储产品,本身是存在一定大小的cache的,如有些高端存储可以配置到512G的cache,其实也就是一个数据缓冲池,类似Oracle的data buffer,一般才采用LRU算法(IBM是ARC算法)管理cache单元,cache单元有可能大于数据库的block大小,如64K,甚至256K。
或许,我们还要假定,如果是同样的应用,两种方式下都能跑,但是,谁更优一些,也就是响应会更快一些?
这是一个疑问题,不好意思,现在没有答案,只想听听你的看法,或者你也可以参考该帖:
上一篇: « 发现mysql的函数瞒强大的
- 发表评论


