返回顶部
首页 > 资讯 > 数据库 >DB2分区数据库浅析
  • 599
分享到

DB2分区数据库浅析

2024-04-02 19:04:59 599人浏览 安东尼
摘要

1、概念描述DB2 数据库分区是 DB2 企业版 DPF(Data Partitioning Feature)选件提供的,它主要用来个分区(逻辑的或物理的)上分布大型数据库提供了必要的可伸缩性,并利用了一个

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!所以,自己需要的,才是最好的。


您可能感兴趣的文档:

--结束END--

本文标题: DB2分区数据库浅析

本文链接: https://lsjlt.com/news/40376.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • DB2分区数据库浅析
    1、概念描述DB2 数据库分区是 DB2 企业版 DPF(Data Partitioning Feature)选件提供的,它主要用来个分区(逻辑的或物理的)上分布大型数据库提供了必要的可伸缩性,并利用了一个...
    99+
    2024-04-02
  • DB2数据库切换为oracle数据库的示例分析
    小编给大家分享一下DB2数据库切换为oracle数据库的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!由于DB2数据库使...
    99+
    2024-04-02
  • Oracle和DB2数据库性能比较分析
    Oracle和DB2数据库是两个领先的关系型数据库管理系统,它们在企业级应用程序中广泛使用。在实际应用中,数据库的性能往往是评价数据库系统优劣的重要指标之一。本文将对Oracle和DB...
    99+
    2024-03-09
    性能 oracle db sql语句
  • Oracle和DB2数据库技术对比解析
    Oracle和DB2是两个知名的关系型数据库管理系统(RDBMS),在企业级应用中被广泛使用。在本文中,我们将对Oracle和DB2这两种数据库技术进行比较并进行详细解析,包括其特点、...
    99+
    2024-03-11
    oracle db 技术对比 用户权限管理 并发访问
  • SQL Server数据库分区分表的示例分析
    这篇文章主要介绍SQL Server数据库分区分表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 需求说明将数据库Demo中的表按照日期字段进行水平分区分表。要求数据文件按一年一个文件存储,且...
    99+
    2023-06-14
  • Python连接DB2数据库
    在工作中遇到了这样的情况,项目中需要连接IBM的关系型数据库(DB2),关于这方面的库比较稀少,其中 ibm_db 是比较好用的一个库,网上也有教程,但是好像不准确,也不太详细,错误百出,没办法只能拿到后自...
    99+
    2022-06-04
    数据库 Python
  • db2数据库如何导出数据
    要导出数据,您可以使用db2的命令行工具或者图形用户界面工具,以下是两种方法: 使用命令行工具进行数据导出: 首先,登录到db2...
    99+
    2024-03-14
    db2
  • SQL Server与Oracle、DB2数据库的区别有哪些
    这篇文章主要讲解了“SQL Server与Oracle、DB2数据库的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server与Orac...
    99+
    2024-04-02
  • SQL Server与Oracle、DB2数据库的区别是什么
    本篇内容介绍了“SQL Server与Oracle、DB2数据库的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • MySQL 数据库分表分区
    博主QQ:819594300博客地址:http://zpf666.blog.51cto.com/有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一、分表为什么要分表?我们的数据库数据越来越大,随之...
    99+
    2024-04-02
  • DB2数据库日常检查
    ...
    99+
    2024-04-02
  • Nagios监控数据库DB2--check_db2_health
    我想大家都知道Nagios监控DB2数据库使用check_db2_oracle插件,但是在使用之前,Nagios服务器上需要安装运行环境。结合我自生多次的测试,我重点讲述如何在CenOS6.7 64bit环...
    99+
    2024-04-02
  • 怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF
    这篇文章主要讲解了“怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Linux虚拟环境下搭建DB2的多分区数据库DPF”吧!  D...
    99+
    2023-06-13
  • 浅析node连接数据库(express+mysql)
    操作是在ubuntu系统的下环境,简单记录一下过程。 首先用apt-get安装数据库,键入命令 sudo apt-get install mysql-server , 一路回车,然后在一个界面设置一下数据库...
    99+
    2022-06-04
    连接数据库 node mysql
  • 浅析开源数据库MySQL架构
    数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也...
    99+
    2024-04-02
  • 浅析php怎么操作数据库
    数据库是网络编程的重要组成部分,它用于存储和管理大量的数据。在网络应用中,对于用户信息、产品信息及其他数据信息都需要进行存储和管理,因此对于数据库的操作是开发网站必不可少的一部分。PHP作为一种广泛应用的后端服务器编程语言,也为我们提供了一...
    99+
    2023-05-14
    php 数据库
  • DB2搜集数据脚本怎样用于数据库hang或性能问题的分析
    这期内容当中小编将会给大家带来有关DB2搜集数据脚本怎样用于数据库hang或性能问题的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 &...
    99+
    2024-04-02
  • python怎么连接db2数据库
    要连接DB2数据库,您可以使用Python的pyodbc模块。首先,您需要安装pyodbc模块并确保已经安装了DB2 ODBC驱动程...
    99+
    2023-10-28
    python 数据库
  • linux怎么重启db2数据库
    要重启DB2数据库,可以按照以下步骤操作: 打开终端窗口。 以root用户或具有适当权限的用户身份登录到系统。 使用以下...
    99+
    2024-02-29
    linux db2数据库
  • springboot怎么配置db2数据库
    要在Spring Boot项目中配置DB2数据库,首先需要在application.properties文件中配置数据库连接信息。以...
    99+
    2024-04-09
    db2 springboot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作