[openGauss 学废系列]-熟悉openGauss体系结构

一、学习目标

本节课是本次学习的第三课,本次课的学习目标是熟悉openGauss体系结构,并了解实例(集簇或服务)和数据库的关系。

1.1 openGauss体系结构

openGauss的体系结构,可以首先来通过一张图进行了解,如下所示:
 

image.png


学习其它数据库,第一反应总会和Oracle体系结构做对比,此处再放上一张Oracle的体系结构图,如下:
 

image.png


openGauss是在PostgreSQL基础上演变发展的,PostgreSQL在很多地方和Oracle很像,两者的Instance部分所代表的都是数据库运行时的内存部分,只是PostgreSQL同openGauss都是单进程多线程数据库,这点和Oracle不太一样,Oracle是多进程数据库。openGauss也在PostgreSQL基础上做了修改,openGauss将PostgreSQL的进程模式修改为线程模式。
openGauss和Oracle的Database部分,两者在目录结构等方面也是存在一定差异的,如下是openGauss数据库Database部分相关目录及含义。

目录名称含义说明
baseopenGauss数据库对象默认存储在该目录
global存储openGauss共享字典表
pg_tblspcopenGauss的表空间目录
pg_xlog存储openGauss数据库WAL日志文件
pg_clog存储openGauss数据库事务提交状态信息
pg_csnlog存储openGauss数据库的快照信息
pg_twophase存储两阶段事务提交信息
pg_serial存储已提交的可序列化事务信息
pg_multixact存储多事务状态信息

1.2 openGauss实例

openGauss的实例是指openGauss的Instance部分,在数据库安装后,默认会创建实例,实例包含了很多运行时的内存部分,在实例的内存部分会存放诸如数据库的SQL执行计划等信息,如1.1 章节 openGauss体系结构中Instance部分,当实例关闭后,实例中的内存部分也会随之消失,当重新启动数据库,内存里之前的SQL执行计划等不存在了,会表现在SQL执行慢等现象。

1.3 openGauss数据库

openGauss数据库有些类似于Oracle从12C开始所引入的多租户和MySQL,一个实例可以对应多个数据库。

二、课程作业

2.1 创建表空间music_tbs1

root@modb:~# su - omm
omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
omm=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE TABLESPACE

image.png

2.2 创建数据库music_db

root@modb:~# su - omm
omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# CREATE TABLESPACE music_tbs RELATIVE LOCATION 'tablespace/test_ts1';
CREATE TABLESPACE
omm=# CREATE DATABASE musicdb  WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb1 WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb2 WITH TABLESPACE = music_tbs;
CREATE DATABASE
omm=# CREATE DATABASE musicdb3 WITH TABLESPACE = music_tbs;
CREATE DATABASE

image.png

2.3 查看数据库表空间

omm=# \db
           List of tablespaces
    Name    | Owner |      Location       
------------+-------+---------------------
 music_tbs  | omm   | tablespace/test_ts1
 pg_default | omm   | 
 pg_global  | omm   | 
(3 rows)

image.png

2.4 查看当前实例下有哪些数据库

omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# \l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 musicdb   | omm   | UTF8     | C       | C     | 
 musicdb1  | omm   | UTF8     | C       | C     | 
 musicdb2  | omm   | UTF8     | C       | C     | 
 musicdb3  | omm   | UTF8     | C       | C     | 
 omm       | omm   | UTF8     | C       | C     | 
 postgres  | omm   | UTF8     | C       | C     | 
 template0 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
 template1 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
(8 rows)

image.png

2.5 查看实例进程及线程

2.5.1 查看实例进程

omm@modb:~$ ps -ef|grep -i gauss
omm          1     0  0 21:56 ?        00:00:28 gaussdb
omm       1182  1126  0 23:27 pts/0    00:00:00 grep -i gauss

image.png

2.5.2 查看进程对应线程

-- 注意 Tp 后对应的是通过ps -ef|grep -i gauss查到的数据库进程ID
omm@modb:~$ ps -Tp 1    
  PID  SPID TTY          TIME CMD
    1     1 ?        00:00:00 gaussdb
    1   293 ?        00:00:00 jemalloc_bg_thd
    1   299 ?        00:00:00 gaussdb
    1   300 ?        00:00:00 syslogger
    1   302 ?        00:00:00 alarm
    1   301 ?        00:00:00 jemalloc_bg_thd
    1   304 ?        00:00:00 jemalloc_bg_thd
    1   303 ?        00:00:00 reaper
    1   305 ?        00:00:00 jemalloc_bg_thd
    1   349 ?        00:00:00 checkpointer
    1   350 ?        00:00:00 Spbgwriter
    1   351 ?        00:00:04 pagewriter
    1   352 ?        00:00:00 pagewriter
    1   353 ?        00:00:00 pagewriter
    1   354 ?        00:00:00 pagewriter
    1   355 ?        00:00:00 pagewriter
    1   356 ?        00:00:00 WALwriter
    1   357 ?        00:00:00 WALwriteraux
    1   358 ?        00:00:00 AVClauncher
    1   359 ?        00:00:00 Jobscheduler
    1   360 ?        00:00:00 asyncundolaunch
    1   361 ?        00:00:00 globalstats
    1   362 ?        00:00:00 applylauncher
    1   363 ?        00:00:00 statscollector
    1   364 ?        00:00:02 percentworker
    1   365 ?        00:00:10 ashworker
    1   366 ?        00:00:02 TrackStmtWorker
    1   367 ?        00:00:00 auditor
    1   368 ?        00:00:00 2pccleaner
    1   369 ?        00:00:00 faultmonitor
    1   370 ?        00:00:00 WLMworker
    1   371 ?        00:00:00 WLMmonitor
    1   372 ?        00:00:00 WLMarbiter
    1   373 ?        00:00:00 undorecycler

image.png

三、学习心得

通过本节课,对于openGauss的体系结构有了一定的理解,但要想深入了解openGauss的体系结构,是需要付出更多努力的,并要结合大量实验来进行学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚雷_TechTalk01

感谢您的鼓励,我会再接再厉。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值