首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Linux 上利用数据分区功能提高可伸缩性和性能(1)

在 Linux 上利用数据分区功能提高可伸缩性和性能(1)

简介当一个数据库由两个或更多数据库分区组成,并且每个数据库分区存储位于其中的每个表的一部分表数据时,就属于数据库分区的情况。不同分区可以在不同计算机上,也可以在相同的计算机上(即逻辑分区)。在这种类型的数据库中,数据被根据存储位置进行散列,以标识哪个数据库分区将存储数据。一个数据库分区由它自己的数据、索引、配置文件和事务逻辑组成。在更旧版本的 DB2 中,数据库分区被称作节点(node)或数据库节点。但是在本文中我们使用术语分区(partition)。逻辑分区共享它们所在的同一台计算机上的资源。
在分区数据库中,一个表可以分布在一个或多个数据库分区中。分区背后的思想就是将一个表的数据分布在多个分区中,将该表中的一部分行存储在一个分区中,而将其他行存储在其他分区中。数据库管理器(DBM)通过自动地将 SQL 请求分解成子请求,来处理数据的检索和更新。然后,这些子请求就在相应的数据库分区中并行地执行。将表划分到多个分区的这种行为对于用户来说是透明的,这意味着虽然数据在物理上是存储在多个数据库分区上的,但是访问起来就像是在一个地方一样。
展示了运行在一台机器上的单个分区,这类似于没有使用 DPF:
图 1. 单个机器上的单个分区接下来的两个图展示了 DPF 真正起作用的情况。 说明了 DPF 被用于三台机器上的情况,其中每台机器上有一个分区。
图 2. 每台机器上一个分区,使用高速通信注意这里使用的高速通信互连,这可以是各机器之间使用的一个 TCPIP 网络。接下来的  展示了同一台机器上的三个分区。这里,分区间的通信是在内存中实现的,而不是通过一个网络(在所有 Linux 平台上,默认情况下 DB2 _FORCE_FCM_BP 是启用的)。
图 3. 同一台机器上的三个分区,通过内存进行通信特别要注意,在前面几个图中,对称多处理器(SMP)也可以换成单处理器。但是,在 DPF 环境中 SMP 服务器更为常见。
分区键 由表中的一列或多列组成,用于使用户可以选择如何对他们的数据进行分区。用户可以通过使用数据库分区组和表空间,来确定将表数据分布到哪些数据库分区上。
用户交互通过一个数据库分区,即用于该用户的协调分区(coordinator partition)来进行。协调分区与应用程序运行在同一个数据库分区上,或者,对于远程应用程序,协调分区运行在应用程序所连接的那个数据库分区上。任何数据库分区都可以成为协调分区。
理解 DB2 Data Partitioning Feature (DPF)要对一个数据库进行分区,需要 DB2 的 Database Partitioning Feature (DPF) 功能。这种可选的 Database Partition Feature 许可只对 DB2 Enterprise Server Edition (ESE) 可用,其费用按照分区数据库中所使用的 CPU 的数量来计算。
何时分区,为何分区具有 DPF 功能的 DB2 UDB ESE 是管理 OLAP、数据仓库和数据挖掘工作负载的理想选择。对于大型 OLTP 工作负载,它也是很好的选择。最常见的分区环境由每个物理系统上的一个数据库分区组成,这些物理系统组成数据库分区集群。每个数据库分区上的数据库管理器使用每个系统上的处理器来管理数据库中属于该分区的那部分数据。
由于数据被划分在多个数据库分区上,因而可以使用多台计算机上的多个处理器的处理能力来满足对信息的请求。数据检索和更新请求被自动分解成一些子请求,然后这些子请求在相应的数据库分区中并行地执行。每多一个服务器,就意味着将有更多的 CPU、内存和更多的磁盘用于分区数据库。
性能的提升源于这样的事实:大量的数据被划分成更小的、更易管理的块,每个分区/系统可以同时运行。如果要处理提取、转换和载入操作(ETL),而批处理窗口又比较小,那么可以考虑使用 DPF。例如,DB2 LOAD 可以在每个分区上同时运行,负载操作可以并行地分摊到多个服务器上。创建索引的性能也将显著提升。而且,通过使用 DPF,可以显著缩短备份和恢复时间,因为每台参与分区的机器需要处理的数据量更小了。
返回列表