我的编程空间,编程开发者的网络收藏夹
学习永远不晚

DB2分区数据库浅析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

DB2分区数据库浅析

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数据库分区实例图:

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 RANGE

PARTITION BY RANGE

哈希分区(Hash   Partitioning)

数据库分区(Database   Partitioning)

      

PARTITION BY HASH

DISTRIBUTE BY HASH

列表分区(List   Partitioning)

带生成列表分区(Table   Partitioning With Generated Column)

PARTITION BY LIST

PARTITION BY RANGE

不支持

多维集群(Multidimensional   clustering)

ORGANIZE BY DIMENSION

 

 

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


DB2分区

Oracle分区

分区架构

Share-nothing

Share-disk

分区特性

每个CPU都有私有内存区域和私有磁盘空间,并且两个CPU不能访问相同磁盘空间,CPU之间的通讯通过网络连接。

每个CPU使用自己的私有内存区域,通过内部通讯机制直接访问所有磁盘系统。

两者区别

可伸缩性 —— 随着数据库的增长可物理性的增加计算资源(也就是数据库分区)

无法通过增加物理的partition来给数据库扩容

语句示例

partition_tablename表选择partition_ id字段作为分区键

hash_tablename表按照hash_part字段进行哈希分区,每个分区以循环的方式放置在表空间tbsp1和tbsp2中。

CREATE TABLE partition_tablename
    (partition_id id NOT NULL,
     partition_id VARCHAR(20) NOT NULL)
       IN tbsp_parts
   DISTRIBUTE BY   HASH (partition_id);

CREATE TABLE hash_tablename
    (hash_part id,
       hash_id varchar2(20))
       PARTITION BY   HASH(hash_id)
      (partition p1 tablespace tbsp1,
    partition p2 tablespace   tbsp2);

 

4、总结

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


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

DB2分区数据库浅析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle和DB2数据库性能比较分析

Oracle和DB2数据库是两个领先的关系型数据库管理系统,它们在企业级应用程序中广泛使用。在实际应用中,数据库的性能往往是评价数据库系统优劣的重要指标之一。本文将对Oracle和DB2数据库的性能进行比较分析,并结合具体的代码示例来展示它
Oracle和DB2数据库性能比较分析
2024-03-09

Oracle和DB2数据库技术对比解析

Oracle和DB2是两个知名的关系型数据库管理系统(RDBMS),在企业级应用中被广泛使用。在本文中,我们将对Oracle和DB2这两种数据库技术进行比较并进行详细解析,包括其特点、性能、功能和使用示例等方面的分析。一、Oracle数据
Oracle和DB2数据库技术对比解析
2024-03-11

SQL Server数据库分区分表的示例分析

这篇文章主要介绍SQL Server数据库分区分表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 需求说明将数据库Demo中的表按照日期字段进行水平分区分表。要求数据文件按一年一个文件存储,且分区的分割
2023-06-14

Python连接DB2数据库

在工作中遇到了这样的情况,项目中需要连接IBM的关系型数据库(DB2),关于这方面的库比较稀少,其中 ibm_db 是比较好用的一个库,网上也有教程,但是好像不准确,也不太详细,错误百出,没办法只能拿到后自己分析源码,总算搞定。 安装 环境
2022-06-04

db2数据库如何导出数据

要导出数据,您可以使用db2的命令行工具或者图形用户界面工具,以下是两种方法:使用命令行工具进行数据导出:首先,登录到db2数据库,并连接到要导出数据的数据库:db2 connect to your_database_name然后,使用以
db2数据库如何导出数据
2024-03-14

浅析node连接数据库(express+mysql)

操作是在ubuntu系统的下环境,简单记录一下过程。 首先用apt-get安装数据库,键入命令 sudo apt-get install mysql-server , 一路回车,然后在一个界面设置一下数据库root的密码就好了 在数据库里面
2022-06-04

怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF

这篇文章主要讲解了“怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF”吧!  D
2023-06-13

linux怎么重启db2数据库

要重启DB2数据库,可以按照以下步骤操作:打开终端窗口。以root用户或具有适当权限的用户身份登录到系统。使用以下命令停止DB2数据库:db2stop确保数据库已完全停止后,使用以下命令启动DB2数据库:db2start检查数据库是否成
linux怎么重启db2数据库
2024-02-29

python怎么连接db2数据库

要连接DB2数据库,您可以使用Python的pyodbc模块。首先,您需要安装pyodbc模块并确保已经安装了DB2 ODBC驱动程序。以下是连接DB2数据库的一般步骤:安装pyodbc模块:您可以使用pip命令来安装pyodbc模块。在
python怎么连接db2数据库
2023-10-28

编程热搜

目录