一、学习目标
本节课是本次学习的第三课,本次课的学习目标是熟悉openGauss体系结构,并了解实例(集簇或服务)和数据库的关系。
1.1 openGauss体系结构
openGauss的体系结构,可以首先来通过一张图进行了解,如下所示:
学习其它数据库,第一反应总会和Oracle体系结构做对比,此处再放上一张Oracle的体系结构图,如下:
openGauss是在PostgreSQL基础上演变发展的,PostgreSQL在很多地方和Oracle很像,两者的Instance部分所代表的都是数据库运行时的内存部分,只是PostgreSQL同openGauss都是单进程多线程数据库,这点和Oracle不太一样,Oracle是多进程数据库。openGauss也在PostgreSQL基础上做了修改,openGauss将PostgreSQL的进程模式修改为线程模式。
openGauss和Oracle的Database部分,两者在目录结构等方面也是存在一定差异的,如下是openGauss数据库Database部分相关目录及含义。
目录名称 | 含义说明 |
---|---|
base | openGauss数据库对象默认存储在该目录 |
global | 存储openGauss共享字典表 |
pg_tblspc | openGauss的表空间目录 |
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
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
2.3 查看数据库表空间
omm=# \db
List of tablespaces
Name | Owner | Location
------------+-------+---------------------
music_tbs | omm | tablespace/test_ts1
pg_default | omm |
pg_global | omm |
(3 rows)
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)
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
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
三、学习心得
通过本节课,对于openGauss的体系结构有了一定的理解,但要想深入了解openGauss的体系结构,是需要付出更多努力的,并要结合大量实验来进行学习。