1、概念描述

DB2数据库分区是 DB2 企业版 DPF(Data Partitioning Feature)选件提供的,它主要用来个分区(逻辑的或物理的)上分布大型数据库提供了必要的可伸缩性,并利用了一个无共享(shared-nothing)结构。数据库在一个非共享的环境中被分解为独立的分区,每个分区都具有自己的资源,例如内存,CPU 和磁盘以及自己的数据、索引、配置文件和事务日志。数据库分区有时称为节点或数据库节点。通过 DPF“分治”的处理,可伸缩性可在单一服务器(纵向扩展)或跨服务器集群(横向扩展)中获得增强。

使用 DPF最显而易见的理由之一就是提高查询工作负载和 INSERT/UPDATE/DELETE 操作的性能。DPF 还可以克服部分 DB2 的架构限制。例如,在 DB2 中,对 4 KB 的页面大小而言,表的最大大小是 64 GB;对于 8 KB 的页面大小而言,表的最大大小是 128 GB;对于 16 KB 的页面大小而言,表的最大大小是 256 GB;对于 32 KB 的页面大小而言,表的最大大小是 512 GB。在 DB2 中,表和表空间的大小限制是根据每个分区进行规定的。跨多个分区划分数据库将允许您根据环境中分区数目的因数来增加表的最大大小。

DB2数据库分区实例图:

2、DPF对数据库性能产生的影响

数据是通过Hash算法均允地散列到不同的分区内的,每个分区只负责处理自己的数据。用户发出 SQL 操作后,被连接的分区被称为 Coordinate Node,它负责处理用户的请求,并根据 Partition key(分区键)将用户的请求分解成多个子任务交由不同分区并行处理,最后将不同分区的执行结果经过汇总返回给用户,分区对应用来说是透明的。

在 DB2 中,数据库分区可以部署在集群或 MPP(多台单个CPU的机器上,建立的一个有多个partition的DB2实例,在其中的每台机器上建立1个Partition)环境下,也就是说数据库分区分布在不同的机器上;数据库分区也可以部署在同一台 SMP(一台有多个CPU的机器上,建立的一个有多个分区的DB2实例,其中分区数量不超过已有CPU的数量)机器上,在同一台机器上的分区我们称为逻辑分区。同时,我们还可以在集群或 MPP 环境下部署多个分区,在集群或 MPP 每一个节点上部署多个逻辑分区。

采用数据库分区有几个好处,以下简单介绍一下:

查询扩展性

这是采用数据库分区最主要的原因之一。将一个大的数据库分成多个小的数据库可以提高查询的性能,因为每个数据库分区拥有自己的一部分数据。假设现在扫描10万条记录,对一个单一分区的数据库来讲,该扫描操作需要数据库管理器独立扫描10万条记录,如果将数据库系统做成10个分区,并将这10万条记录平均分配到这10个分区上,那么每个数据库分区的数据库管理器只扫描10万记录。

架构限制

非分区数据库的最大的表取决于页面大小,4K页最大支持64 GB,32K页最大支持512 GB数据量。表和表空间大小限制是每个分区上的限制,因此将数据库分成N个分区可以将表的最大尺寸增加为单个分区表最大尺寸的N倍。内存也可能是个限制,特别是在32位操作系统环境,因为每个数据库分区管理并拥有自己的资源,因此通过数据库分区可以克服这个限制。

数据库装载性能

数据库分区可以并行装载数据到所有数据库分区,极大减少单表的装载时间,这对于像实时商业智能系统那样对数据装载的时间要求特别高的系统特别重要。

数据库维护性能

将数据库分散到多个数据库分区服务器可以加快系统维护,因为每个操作都运行在分区所管理的一个数据子集上面,这样可以通过数据库分区进一步减少创建索引的时间,减少搜集统计信息的时间,因为runstats仅运行在一个数据库分区上面,减少表重整(reorg)的时间。

备份/恢复性能

将数据库分区到不同的数据库服务器上可以大大减少数据库备份的时间,这也是是决定是否使用数据库分区很重要的一点。DB2 通过为每个表空间分配独立的进程或线程来实现备份和恢复操作的并行处理。在分区数据库环境的备份中,每个分区的备份是独立的,通过并行备份数据库分区可以大大减少备份整个数据库的时间。

日志

在高度活动的系统中,数据库日志的性能可能会限制系统的整体吞吐量。在分区数据库环境中,每个分区有自己一套日志。当大量插入、更新、删除操作时,多个数据库分区可以提高性能,因为日志是在每个数据库分区上并行写入,而且每个分区需要记录的日志更少。

DB2随数据量或处理器和分区的增加,可以提供近线性的扩展能力,可是,数据库分区是否提供最多的益处依赖于处理的工作负荷、最大表的大小及其他因素。目前我们项目的数据仓库也是使用数据库分区,因为数据量较大,并且业务对CPU的需求也比较大,但是机器较老,单机无法增加更多CPU,并且一个实例上要实现多个分区,所以采用了另外一种SMP Cluster(多台有多个CPU的机器上,建立的一个有多个partition的DB2 Instance,在其中的每台机器上建立多个Partition)

3、DB2分区与Oracle的比较Oracle分区DB2分区Oracle 10g语法DB2 V9语法

区间分区(Range   Partitioning)表分区(Table   Partitioning)PARTITION BY RANGEPARTITION BY RANGE

哈希分区(Hash   Partitioning)数据库分区(Database   Partitioning)PARTITION BY HASHDISTRIBUTE BY HASH

列表分区(List   Partitioning)带生成列表分区(Table   Partitioning With Generated Column)PARTITION BY LISTPARTITION BY RANGE

不支持多维集群(Multidimensional   clustering)无ORGANIZE BY DIMENSION

以数据库分区为例,以下是DB2的数据库分区与Oracle哈希分区特性的比较:DB2分区Oracle分区

分区架构Share-nothingShare-disk

分区特性每个CPU都有私有内存区域和私有磁盘空间,并且两个CPU不能访问相同磁盘空间,CPU之间的通讯通过网络连接。每个CPU使用自己的私有内存区域,通过内部通讯机制直接访问所有磁盘系统。

两者区别可伸缩性 —— 随着数据库的增长可物理性的增加计算资源(也就是数据库分区)无法通过增加物理的partition来给数据库扩容

语句示例partition_tablename表选择partition_ id字段作为分区键hash_tablename表按照hash_part字段进行哈希分区,每个分区以循环的方式放置在表空间tbsp1和tbsp2中。

CREATE TABLEpartition_tablename(partition_id idNOT NULL,partition_idVARCHAR(20)NOT NULL)INtbsp_partsDISTRIBUTEBYHASH (partition_id);CREATE TABLEhash_tablename(hash_part id,

hash_idvarchar2(20))

PARTITIONBYHASH(hash_id)

(partition p1 tablespace tbsp1,partition p2 tablespace   tbsp2);

4、总结

此次分享旨在简单介绍DB2分区的概念,并与Oracle的分区做比较。分区数据库为提高查询工作负载和 DML操作的性能提供了便利。 如果数据量较小,性能提升并不会很明显,所以分区数据库一般用在数据量较大,查询需求较频繁的数据库。其实使用Oracle好还是DB2好并没有绝对的选择。例如Oracle采用完全开放策略,可以使客户选择最适合的解决方案,对开发商全力支持;DB2则最适于海量数据,并且在企业级的应用最为广泛,可伸缩性及并行性强。就像广东的老火汤很有味道,很滋补,中国人可能都喜欢喝,但是外国人觉得他们的罗宋汤那种很粘稠的才叫做汤,中国这种顶多叫Water!所以,自己需要的,才是最好的。

db2 最大分区数_DB2分区数据库浅析相关推荐

  1. db2 最大分区数_db2 查询表分区数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. db2 mysql 代码_db2 修改数据库字符集

    MySQL的字符集 一.字符集的查看 1.查看服务器支持的字符集: show character set;(show char set;show charset;) 查看服务器支持的字符集编码:sho ...

  3. 如何建立DB2分区数据库?(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  4. 调优 DB2 UDB v8.1 及其数据库的最佳实践-IBM developerWorks

    http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0404mcarthur/#sqltuning 级别: 初级 ...

  5. db2数据备份到mysql_DB2数据库自动备份详解

    DB2数据库自动备份详解 由脱机备份转换为联机备份: 在db2CMD下执行 1.连接需要备份的数据库:db2 connect to数据库名称 2.修改自动数据库备份(AUTO_DB_BACKUP)参数 ...

  6. 在 AIX 操作系统上如何安装 IBM DB2 9版本的分区环境

    DB2 的分区环境适合于统计类和分析的应用,如一般单位的数据仓库系统,在数据仓库系统部署过程中,分区环境的安装往往是项目部署的第一步,在 DB2 的信息中心中有类似于安装方面的资料介绍,但资料比较分散 ...

  7. mysql 数据库设置mysql注入_MYSQL数据库浅析MySQL的注入安全问题

    <MYSQL数据库浅析MySQL的注入安全问题>要点: 本文介绍了MYSQL数据库浅析MySQL的注入安全问题,希望对您有用.如果有疑问,可以联系我们. 如果把用户输入到一个网页,将其插入 ...

  8. DB2/Informix 和开放源码:数据库防御

    DB2/Informix 和开放源码:数据库防御 实时监视数据库   <script language="JavaScript" type="text/javasc ...

  9. db2数据库还原找不到文件_DB2 还原数据库

    背景: 放数据库DB2的服务器是windows server操作系统,又在上面安装了Linux虚拟机,然后在虚拟机上安装了DB2.应用服务器上装的是Tomcat. 要求: 在本地电脑上备份数据库.本操 ...

  10. db2 创建样本数据库_db2创建数据库

    1.切换用户 su - db2inst1 2.创建数据库 db2 create db databaseName using codeset utf-8 territory CN 注意: 3.连接新数据 ...

最新文章

  1. 记录一次生产环境中Redis内存增长异常排查全流程!
  2. 混合mixin函数_Less 混合
  3. 【PAT (Advanced Level) Practice】1005 Spell It Right (20 分)
  4. SVC和PendSV
  5. 【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器
  6. 华科高级软件测试技术1704班-02组 如何计算团队成员贡献分
  7. FatMouse and Cheese HDU - 1078(记忆化搜索入门模板)
  8. RocketMQ之事务消息
  9. java面向对象程序_面向对象编程基础(java)
  10. 软件工程概论个人总结
  11. 关于java中判断字符串相等==和equal 详解
  12. Windows下 tuxedo 安装及测试
  13. Linux基本操作笔记
  14. 快检员计算机知识,计算机检验员(初/中/高级/技师/高技)
  15. mos管的rc吸收电路计算_RC阻容吸收计算公式
  16. How To Verify the Word Size (32bit vs 64bit) of the Oracle Binary on MS Windows systems (文档 ID 46506
  17. ZYNQ-使用HDMI显示器进行SD卡图片读取显示
  18. 软考高级-信息系统管理师之综合测试与管理(最新版)
  19. 风丘科技为您提供电动汽车高压测试方案
  20. 东南蒙纳士计算机复试,2016年东南大学——蒙纳士大学双硕士学位研究生复试通知...

热门文章

  1. windows 下配置nginx访问静态图片
  2. python3.0编程软件_震惊!国内已知第一款Scratch 3.0编程软件KittenBlock推出Python编程功能!...
  3. 如何利用导数推导向心加速度公式? + 开普勒 第三定律的推导过程
  4. 使用Excel和matplotlib绘制3D折线图
  5. web前端网页制作课作业:使用HTML+CSS技术制作中华传统文化网站【文房四宝】学生网页设计作品 简单静态HTML网页作品
  6. DeepFaceLab:手动提取高精度脸图,减少抖动!
  7. [Codeforces] AIM Tech Round 5 (rated, Div. 1 + Div. 2) 总结+题解
  8. 一个好玩的在线Android图形可视化开发工具  App Inventor
  9. python-seleium实现珞珈在线网课辅助观看功能
  10. etimedout 运行_googleapis 谷歌统计 nodejs 遇到 ECONNRESET和 ETIMEDOUT