Gaussdb T进阶学习

Gaussdb 100正式改名为Gaussdb T,Gaussdb 200和300合并为Gaussdb A.

前天学习了Gaussdb T的安装,在centos 7.3上安装了gaussdb t,虽然中间出现了一些错误,但是还是解决了,成功完成安装,这两天把Gaussdb t的产品文档大概浏览了一下,对比oracle数据库,SQL语法90%相同,但是架构上还是存在较大差异,gaussdb t的架构参考了oracle、mysql、pg、db2,今天分享一下具体的架构。

Gaussdb t目前有3种架构,分别是单机、HA、分布式集群,据说2020年1月1日会发布RAC集群架构,目前发布的3种架构,是存在包含关系的,单机是最基本的架构,然后HA是多套单机组成,可以是1主1备、1主2备等,接着分布式集群是有多套HA组成,一般是多套1主2备组成。因此学习gaussdb t架构,要从最基本的单机开始学习。

Gaussdb t单机版,就是在一台服务器运行数据库,每套数据库只有一个守护进程,通过端口区分数据库,连接时通过IP地址加端口连接,守护进程会fork出各种功能线程,其中最重要的是6个核心功能线程,大体跟oracle一样,当然也有一点区别,如下图:

Gaussdb T进阶学习_第1张图片

oracle数据库一样,gaussdb 由实例和数据库组成,数据库是一系列的文件,实例是进程加内存结构(只有SGA,没有PGA)。

其中,数据文件主要有3种,如下:

  1. DATA FILE,数据文件,用于存放各种数据,单库最多1024个数据文件,每个数据文件最大8T(undo除外,undo最大32G)
  2. LOG FILE,日志文件,用于存放redo日志,可以重复使用,最少3组,每个redo 日志文件一般建议5-20G
  3. CONTROL FILE,控制文件,用于数据库名、数据文件位置等信息,在数据库启动到mount阶段时会检查。

实例层面,主要6个核心线程,用途跟oracle一样,没有pmon线程(因为只有一个守护进程,不需要操作系统层面清理进程,直接数据库中关闭线程即可),多了一个STAT线程,如下:
1. DBWR,数据写线程,用于把脏数据写到磁盘,默认有8个线程,有多种方式控制写脏数据到磁盘。

2. LOWR,日志写线程,用于把redo日志写到磁盘,跟oracle一样,有多种啊方式控制写日志到磁盘

3. CKPT,检查点线程,用于控制检查点,

4. SMON,用于实例恢复,UNDO前滚等

5. ARCH,归档日志线程,用于控制切换归档日志。

6. STAT,统计信息线程,用于收集对象统计信息的。

内存结构上,基本也跟oracle一样,不过多了一个cr pool,如下:

  1. Data buffer,数据缓存区,缓存表索引等数据
  2. Log buffer,日志缓存区,缓存redo日志
  3. Shared pool,共享池,缓存SQL语句、执行计划等信息
  4. Temporary buffer,排序用,不够时直接放临时表空间
  5. Large pool,大池,存放较大的SQL
  6. Cr pool,一致性读池,用于构建一致性读的数据块,与Oracle不一样的地方

 

数据文件的构造,跟oracle一样,由段、区、块组成。默认1个块是8K,一个区是8个块,在创建表时指定,暂时还没有自动扩展区的功能,因此如果是大表,在创建的时候建议直接指定2M或者更大的区,否则频繁插入时会出现高水位等待事件。

 

连接上,跟oracle差不多,由一个lsnr线程监听,如果有客户端发起连接,判断符合条件即可建立会话,由reactor控制连接池,这一点跟Oracle也不一样,目前还没有具体的文档明确连接过程,后续再慢慢分析。

 

注意一点,gaussdb t的启动进程只有一个,跟mysql数据库一样,是通过线程控制的,杀会话也只能在数据库中进行,不能像oracle一样在操作系统层面杀进程来断开会话。

 

你可能感兴趣的:(国产数据库,Gaussdb)