楼主: wangzhonnew

有奖讨论:DB2多分区系统如何决定分区数量

[复制链接]
招聘 : 数据库管理员
论坛徽章:
1
2010系统架构师大会纪念
日期:2010-09-03 16:39:57
11#
发表于 2012-4-11 11:03 | 只看该作者
本帖最后由 我笨故我在 于 2012-4-11 11:05 编辑

补充一点:
较早的时候使用DPF考虑的较重要的还有一条:突破单个partition的限制,这在数据仓库系统中尤为多见
1)32位系统的内存限制
2)V8及以前存储容量较小的限制
对于V9以后的版本,尤其又是目前64位系统普及的时候,这个因素的考虑就较少了

使用道具 举报

回复
求职 : 技术/实施/服务顾问
论坛徽章:
6
SQL大赛参与纪念
日期:2011-04-13 12:08:17ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54咸鸭蛋
日期:2012-04-05 14:04:082014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
12#
发表于 2012-4-11 20:06 | 只看该作者
本帖最后由 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个分区)。

使用道具 举报

回复
招聘 : c/c++研发
论坛徽章:
45
技术图书徽章
日期:2014-03-10 14:09:192012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:51:22ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15现任管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
13#
 楼主| 发表于 2012-4-11 21:09 | 只看该作者
2T的数据划了16个分区~~~~ 一个分区也就150G,对应3内核,16G内存,硬件很给力啊,看来是不差钱的公司

使用道具 举报

回复
论坛徽章:
9
2009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
14#
发表于 2012-4-11 21:43 | 只看该作者
本帖最后由 mdkii 于 2012-4-11 21:48 编辑
wangzhonnew 发表于 2012-4-10 21:14
恩,DB2分区一般指的是数据库分区DPF。表分区一般都会额外强调。
mdkii讲道“1个CORE划一个逻辑分区“。对 ...


有道理。。。 2个CPU可以空出一个给烂查询。但是如果真有烂查询,估计空出一个也不够 :)。
对于另一个问题,我的观点是这样:
其实从性能的角度看,最好的办法就是在一个巨大的LPAR里建数个逻辑分区。
这样既可以充分利用分区间并行的特性(DB2分区内并行貌似做得还不够好),又使得分区间的数据交换非常的高效(进程间通讯总是比网络通讯效率要高)。另外当分区间的负载不均衡的时候,分区间可以共享CPU。
但是当逻辑分区多到一定程度,主机到存储的带宽会成为瓶颈,一般的机器HBA卡的数量是有限的。所以只好让逻辑分区分布到不同的物理机器上。另外逻辑分区太大,横向扩展会比较麻烦,满足系统高可靠性的代价也会越大。所以这是一个看你如何权衡的问题。
我们也基本上4~8个core一个LPAR。。。

使用道具 举报

回复
论坛徽章:
9
2009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
15#
发表于 2012-4-11 21:47 | 只看该作者
纯粹OLTP的系统建议还是不要用DPF了,带来架构复杂不说,很可能单个交易的性能还会有所下降。。。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:332011新春纪念徽章
日期:2011-02-18 11:43:33
16#
发表于 2012-4-12 10:04 | 只看该作者
wangzhonnew 发表于 2012-4-11 21:09
2T的数据划了16个分区~~~~ 一个分区也就150G,对应3内核,16G内存,硬件很给力啊,看来是不差钱的公 ...

也有些不理解,感觉是为了dpf而dpf,或者是为了考虑到将来的扩展。
目前我在规划dpf的时候,会留一定的余量,会在增加dpf分区的数量,这样,在机器的计算能力不足的时候,则只需要把一定量的分区迁移到新机器即可,而不需要建新的分区,这样的迁移难度会小很多。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
1
2010系统架构师大会纪念
日期:2010-09-03 16:39:57
17#
发表于 2012-4-12 10:16 | 只看该作者
OLTP用DPF不见得性能下降,数据仓库使用DPF不见得性能就提升。
不理解原理盲目扩展成DPF,无论是OLTP还是分析系统性能肯定是降低的
OLTP追求local bypass,数据仓库追求co-location。当然local bypass的技术难度更大
包括DB2在内所有采用hash算法平衡数据的share nothing架构,其使用原理是一样的

使用道具 举报

回复
论坛徽章:
2
数据库板块每日发贴之星
日期:2009-07-28 01:01:022013年新春福章
日期:2013-02-25 14:51:24
18#
发表于 2012-4-12 11:11 | 只看该作者
oracle 不是建议超过2g 就建分区吗

使用道具 举报

回复
论坛徽章:
9
茶鸡蛋
日期:2011-12-28 08:44:392012新春纪念徽章
日期:2012-01-04 11:49:54优秀写手
日期:2013-12-18 09:29:152014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
19#
发表于 2012-4-14 10:55 | 只看该作者
我们是电信行业,也正好在使用DB2数据库。对于大数据量来说,分区是肯定的。我们是按一年12个月,将数据库分成12个分区,每个月的数据分别放在一个分区内,这样对访问数据速度有不小性能上的提升。

使用道具 举报

回复
论坛徽章:
78
ITPUB15周年纪念
日期:2020-08-28 17:23:53双鱼座
日期:2016-03-19 19:38:31秀才
日期:2016-02-18 09:31:52秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16
20#
发表于 2012-4-15 16:14 | 只看该作者
国内最大的DB2数据库经过实际测试是选择了4个CPU一个分区,再打开分区内并行。
一个CPU一个分区肯定是不好的做法,最多只适合做benchmark,生产这么做不合适。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表