`
jzy996492849
  • 浏览: 128866 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DB2 Vs MySQL系列 | 体系架构对比

 
阅读更多
摘要: DB2体系结构 DB2 for LUW进程模型在DB2v9.5之前都是多进程模型,DB2 v9.5之后体系架构变更为单进程多线程模型。 是一个C/S结构,客户端可以通过TCP/IP或IPC协议与服务器通信,每当客户端与服务器建立连接之后,会在服务器端产生一个代理线程(db2agent)负责处理来自客户端的所有请求,但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会产生很大的系统开销,所以DB2服务器在启动时创建一个常连接池来避免重复地创建/销毁代理线程。

DB2体系结构

6084d159527a51d9e3f5c3f38a6277eb069490a0

DB2 for LUW进程模型在DB2v9.5之前都是多进程模型,DB2 v9.5之后体系架构变更为单进程多线程模型。

是一个C/S结构,客户端可以通过TCP/IP或IPC协议与服务器通信,每当客户端与服务器建立连接之后,会在服务器端产生一个代理线程(db2agent)负责处理来自客户端的所有请求,但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会产生很大的系统开销,所以DB2服务器在启动时创建一个常连接池来避免重复地创建/销毁代理线程。

但是如果某一个处理的请求非常大时,如果单个线程去处理效率比较低下,为了提高单个请求的处理能力,与客户端通信的那个代理线程(db2agent)可以从线程池中额外召集几个线程(db2agentp)来共同处理某个请求。

DB2的线程分类

常连接池内的线程db2agent和db2agentp
处理客户端请求,比如从bufferpool中取请求的数据,或者将请求拆解放到预取(prefetch)队列中供预取进程(prefetcher)从磁盘取数据使用、或者将一些DML操作记录到日志缓冲区(logbuffer)中等。

通信管理线程db2tcpcm和db2ipccm
负责对来自客户端的连接请求进行安全验证和检查,并与客户端实现三次握手连接。

数据页预取进程db2pfchr/页面清理进程db2pclnr
当请求的数据不在bufferpool中时,需要预取进程db2pfchr通过异步读数据的方式将将所需数据从磁盘读入bufferpool中。

DB2对数据的操纵主要在bufferpool中进行,当插入某些数据或对某些数据做了变更后形成脏页(dirtypage)后,需要使用线程db2pclnr根据一定的机制定期清理bufferpool中的脏页,一方面持久化数据,另一方面给bufferpool腾出更多可置换空间供使用。

日志页读写进程db2loggr/db2loggw
DB2采用的是读日志优先(Readlog ahead)的策略来持久化数据,即在将insert/delete/update的数据写入磁盘前,必须先将对这些操作的日志从日志缓冲区持久化到磁盘当中,这个操作由db2loggw线程完成。

当需要使用持久化到磁盘的日志恢复或撤销某些操作时,需要从磁盘中将对应的日志读入到日志缓冲区中,此时有db2loggr线程完成。

全局死锁检测线程db2dlock
该线程主要是检测系统死锁防止因为死锁造成的应用不可用。

以下为部分常见DB2管理工具和实例:

5171186dac9425d5472e9d1804fbaa192f263d46


DB2实例命令

7253f3d7205f7b9b9790e415c1559aba58583c9c
MySQL体系结构
27cda980a77228ead5469a36cd5ac242fb75a586

MySQL的体系架构如上图所示,可将其划分为以下三个逻辑层:

应用层(Application Layer)
逻辑层(Logical Layer)
物理层(Physical Layer)
应用层

ApplicationLayer

b5e08dd024d378c395e43070cd37c0a5e07ab650

MySQL管理工具和应用实例(Administrator&Utilities)

主要是连接到MySQL服务器检索、修改或增加数据,有以下常见MySQL管理工具或实用程序。

2cfb94a054ef9485264c7df3c6cacd5cdb707510

本地查询接口(Query Interface)

MySQL查询接口主要指mysql脚本,使用mysql工具可以直接与MySQL服务器交互,是日常与MySQL服务器打交道最频繁的工具。

客户端应用接口(Client API)

客户端应用接口主要是使用MySQL服务器对外公布的一些API调用访问数据库,主要有CAPI、Python API以及JavaAPI。

逻辑层

LogicalLayer

8b629a5885338faa3478b484b773ddbd81bbb6a3

MySQL逻辑层主要是包括以下几个功能:

SQL引擎编译SQL语句
将客户端发送的SQL语句请求通过SQL引擎将SQL语句编译成MySQL服务器内部存取数据的指令的过程,编译过程包括查询解析(QueryParser)、查询检查(Query check),查询优化(QueryOptimizer)以及查询执行(Query Excution)四个阶段。

事务控制
事务(Transaction)是由一组SQL语句组成的逻辑处理单元,这个逻辑处理单元被原子性地处理,即要么其中的所有SQL语句全部执行成功,要么全部失败,没有第三种可能。那么MySQL是怎么保证事务被原子性地处理呢?这就是Transactionmanagement组件的功能了。当事务全部处理完毕时,通过该组件完成决定commit还是rollback操作。

日志管理
数据库需要将所有对数据变更的操作记录下来,以便当数据库发生crash时做Redo或Undo操作,或者在分布式结构中将操作通过从一个计算节点共享到其他计算节点,这些功能都是通过事务日志来控制的。

MySQL的事务日志管理系统是Recoverymanagement组件,主要功能是持久化事务日志以及当数据库crash时将数据库恢复到crash之前的一致性状态。

存储管理(Storage management)
数据库中操作数据的主要场所是bufferpools,怎么控制数据页和索引页在bufferpool中的状态就是通过storagemanagement完成的,该组件主要还是对Page层面的管理,包括将页读入内存、页的清理等。

值得一提的是,MySQL的逻辑层的上述几个组件功能并不是MySQL特有的,而是普遍适用于DB2/Oracle等常见关系型数据库。

物理层

PhysicalLayer

数据库的物理层主要关注的是数据怎么落地存储以及被有效访问的问题,MySQL的物理层设计比较特殊,MySQL提供了多种存储引擎供用户选择,而且这些存储引擎是可插拔的(Pluggable),这是区别于业内其他关系型数据库的一个很重要的特征。

MySQL数据库为用户提供了20多种可插拔的存储引擎,比较常见的有如下列表所示几种:

df9fa497ae00e8d75952fff5deee0b350a533b72

如上图的存储引擎中,从功能上比较接近商业数据库功能的是InnoDB存储引擎。从MySQL5.5开始,InnoDB成为MySQL服务器的默认存储引擎;而早在SunMicroSystem被Oracle收购之前的2005年,InnoDB存储引擎就被Oracle收购。

相比较于其他MySQL存储引擎,MySQLInnoDB存储引擎支持以下关键特性:

多版本并发控制(MVCC)
行级锁(Row-level Locking)
外键支持(Foreign key support)
群集索引(Cluster Indexing)
可自由分配的bufferpools
在线数据库备份
以下以InnoDB内部是怎么和磁盘文件交互的详细架构示意图

236ada10c3bf66a6e6947eddde301552ace8cb46

如下图是支持访问MySQL数据库服务器的API接口类型,可以通过编写程序调用四种API接口访问MySQL数据库:

JDBC with Connector/J
通过Java程序访问MySQL服务器

.NET with Connector/NET
使用.NET程序访问MySQL服务器

ODBC with Connector/ODBC
Other APIs with C Library
使用基于C语言库的编程语言,比如C/C++语言、Python/PHP/Perl/Ruby语言等访问MySQL数据库。

5fc4bf5f4349dad56a776ccd3224b244315e5aa7

总之,MYSQL支持通过当前最流行的几种主流语言访问。



原文发布时间为:2018-01-08

本文作者:Enmotech

本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号

如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
分享到:
评论

相关推荐

    DB2与Oracle 体系架构

    标题:DB2与Oracle体系架构 描述:本文深入解析了IBM DB2与Oracle数据库系统在体系架构上的异同,旨在为数据库管理员、架构师及IT专业人员提供深度洞察,帮助理解两种主流数据库技术的核心差异。 ### 一、DB2与...

    db2迁移到mysql.docx

    ### DB2迁移到MySQL的关键知识点 #### 一、概述 本文档主要介绍从DB2数据库迁移到MySQL数据库的过程中需要注意的一些关键点和技术细节。这包括了数据类型转换、SQL语法差异处理、函数转换等方面的内容。 #### 二、...

    db2mysql access to mysql 数据库转换

    "db2mysql access to mysql 数据库转换" 提供了一种工具,帮助用户将Microsoft Access数据库(.mdb或.accdb文件)的数据和结构迁移到MySQL数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **...

    DB2数据库表导入MYSQL

    在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,比如从IBM的DB2迁移到MySQL。这个过程涉及到数据的转换、结构的映射以及兼容性问题的解决。下面我们将详细探讨如何从DB2数据库将表导入到...

    DB2+mysql+orcal+redis的链接jar包

    在给定的压缩包文件中,我们找到了四个主要数据库系统的连接JAR包:DB2、MySQL、Oracle以及Redis。这些JAR包允许Java开发者在他们的应用程序中与这些数据库进行交互。以下是关于这些数据库系统及其相关JAR包的详细...

    数据迁移工具DB2DB和mysql to oracle

    本文将深入探讨两种数据迁移工具——DB2DB和mysql to oracle,以及它们在不同数据库间迁移数据的关键知识点。 首先,DB2DB工具,正如其名,专门用于在IBM的DB2数据库之间进行数据迁移。DB2是一款强大的关系型数据库...

    Oracle,DB2,mysql的驱动以及用Java连接数据库的方法

    Oracle、DB2和MySQL是三种非常流行的数据库管理系统,广泛应用于企业级应用、数据分析以及互联网服务。Java作为一种多平台支持的编程语言,常常被用来与这些数据库进行交互。本篇将详细介绍这三种数据库的驱动以及...

    自己收集的orcal,db2,mysql,sybase jdbc驱动

    标题中的"自己收集的orcal,db2,mysql,sybase jdbc驱动"表明这是一个包含不同数据库系统的Java数据库连接器(JDBC)驱动程序的集合。JDBC是Java中用于与各种数据库进行交互的一组接口和类,它允许Java开发者编写...

    DB2常用语句

    为了更好地管理和优化DB2数据库的性能,掌握一系列常用的DB2语句变得尤为重要。本文将详细介绍DB2中用于监控数据库健康状况、调整配置参数以及获取快照监视器信息的相关命令。 #### 二、数据库管理配置查询 **1. ...

    MySQL和DB2建表SQL差异

    ### MySQL与DB2建表SQL语句的主要差异 在数据库管理领域中,不同的数据库系统有着各自独特的特性与语法。MySQL和DB2作为两种广泛使用的数据库管理系统,在创建表时存在一些重要的差异。理解这些差异对于跨数据库...

    国产数据库kingbase数据迁移到mysql、DB2

    标题中的“国产数据库kingbase数据迁移到mysql、DB2”涉及到的是数据库迁移这一主题,特别是从国产数据库系统Kingbase向两种广泛应用的关系型数据库MySQL和IBM的DB2迁移的过程。数据库迁移是IT领域中常见的任务,它...

    DB2和oracle对比

    标题中的“DB2和Oracle对比”意味着我们将探讨这两款企业级数据库管理系统——Oracle数据库和IBM的DB2——在性能、功能、成本、易用性、安全性以及市场占有率等方面的差异。 Oracle数据库是由Oracle公司开发的一款...

    MSSQL DB2 ORACAL三种数据库常用函数对比大全

    MSSQL DB2 ORACAL三种数据库常用函数对比大全,对比以上的数据库,查询的时候很有用。熟悉三种数据库的函数。采用excel的表格的方式呈现。

    MySQL to DB2 UDB Conversion Guide

    ### MySQL到DB2 UDB迁移指南 #### 一、引言与概述 本文档旨在提供一个全面的指导方案,帮助用户将MySQL数据库及其应用程序迁移到IBM DB2 Universal Database (DB2 UDB)。该迁移过程不仅可以提升应用性能,还能利用...

    access转mysql的软件db2mysql

    标题中的“access转mysql的软件db2mysql”指的是一个专门用于将Microsoft Access数据库转换成MySQL数据库的工具。Access是一款由微软开发的关系型数据库管理系统(RDBMS),它使用Jet数据库引擎,适合小型到中型企业...

    rf调用Infomix db2 oracle mysql方法.rar

    在给定的“rf调用Infomix db2 oracle mysql方法.rar”压缩包文件中,我们可以预见到如何使用Robot Framework与不同类型的数据库(如Infomix、DB2、Oracle和MySQL)进行交互的详细指南。本文将深入探讨这些知识点。 ...

    MySQL笔记-MySQL⾼⼿系列

    与其他商业数据库如Oracle、SQL Server、DB2相比,MySQL更适合初创公司和预算有限的项目,尤其在互联网领域,其市场份额居首。 2. **数据库基础知识** - **DB(Database)**:数据库是存储数据的容器,它可以是...

    spring、mybatis、atomikos实现DB2、Mysql多数据源事务demo

    本示例中的"spring、mybatis、atomikos实现DB2、Mysql多数据源事务demo"提供了一个实用的框架,演示了如何在Spring框架中结合MyBatis持久层框架以及Atomikos事务管理器来处理来自DB2和MySQL两个不同数据库的数据源...

    db2_mysql_oracle数据库驱动架包

    这个压缩包里面存放着:db2数据库,mysql数据库,oracle数据库驱动架包 希望能帮到大家。

Global site tag (gtag.js) - Google Analytics