|
本帖最后由 zcl32 于 2012-4-11 20:09 编辑
首先,单分区还是多分区主要是根据业务的类型来决定的.
相对于单分区来说,多分区更多用于数据仓库和联机分析处理类型的数据库中,可以更好地发挥多分区的并行处理能力。
但是,OLTP或者混合类型的系统,也可以利用多分区的一些特性。比如,数据库表如果可以选择合适的分区键把数据均匀地分布到多个分区中,同时,一个事务相关的数据基本上都能放置在一个分区上的时候,应用也允许的话,可以利用dpf来搭建一个可扩展的数据库集群,由于每次事务处理基本上在单个分区内能够完成,不需要多个分区之间的大量数据传输,对于事务的相应时间也可以保证;但是相对于单分区,这种方式在一定程度上(增加节点需要数据重新分布)可以通过增加节点提高扩展性,能满足更多的用户处理请求。
我们主要是在偏重数据仓库类型的数据库系统上使用多分区数据库。
选择分区的数量,CPU、内存,数据量,工作负载和任务类型都需要进行考虑。
从数据量的角度考虑,希望分区数量越多越好,这样每个分区处理的数据就越少,性能也越快;
从cpu和内存的角度考虑,希望每个cpu都可以至少分配一定的内存(例如4G),同时,每个分区至少一个cpu内核;
从工作负载上考虑,并发用户多的话(例如5-10个以上),分区数量上就要考虑每个分区适当多分配一些处理器内核。
另外,还有一点,选择多少个分区,还决定于系统硬件的其他配置。比如存储设备。存储IO的性能跟不上,每台服务器节点上分配过多的分区数也没有什么用处。
最后,还要考虑系统的可用性方面,分区数多的话可以降低其他节点接管后恢复处理的时间;以及系统的维护方面,比如备份恢复、数据装载等。
所以,分区数量的选择其实是系统各个方面包括应用设计的一个综合考虑,需要进行仔细权衡。
我们的数据库系统,不算数据仓库系统,也不算oltp,基本上属于混合型的,总数据量2T的规模,4台linux刀片服务器,每台2cpu(每cpu6核),64G内存,千兆以太网络连接,存储上采用共享的SAN存储设备,一共划分了16个分区(每个服务器节点4个分区)。
|
|