首页 > 其他分享 >openGauss体系结构以及对象管理

openGauss体系结构以及对象管理

时间:2023-10-22 11:01:52浏览次数:42  
标签:00 对象 11791 tablespace 空间 openGauss pts 数据库 体系结构

1、Oracle 11g、12C体系概述

oracle 11G-体系结构

openGauss体系结构以及对象管理_体系结构

oracle 12C体系结构

openGauss体系结构以及对象管理_体系结构_02

2、openguass体系结构

openGauss体系结构以及对象管理_对象管理_03

逻辑结构

openGauss体系结构以及对象管理_openGauss_04

3、 Oracle VS openguass

oracle 12C开始支持线程服务器模式,通过设置初始化参数thread_execution,可以启用或关闭多线程模式,该参数缺省值为false,设置为TRUE启用12C的这个新特性:

SQL> show parameter threaded_exec
NAME TYPE VALUE
------------------------------------ ------------------- ----------
threaded_execution boolean FALSE
SQL> alter system set threaded_execution=true
scope=spfile;
system altered

操作系统上启动的进程只有5个(PMON / PSP0 / VKTM / DBW0

/ U004 / U005),其中U<NNN>进程是共享线程的“容器进

程”,每个进程可以容纳100个线程:

[oracle@12C dbs]$ ps -ef|grep ora_
oracle 27404 1 0 17:00 ? 00:00:00 ora_pmon_core
oracle 27406 1 0 17:00 ? 00:00:00 ora_psp0_core
oracle 27408 1 3 17:00 ? 00:00:05 ora_vktm_core
oracle 27412 1 0 17:00 ? 00:00:00 ora_u004_core
oracle 27418 1 0 17:00 ? 00:00:00 ora_u005_core
oracle 27424 1 0 17:00 ? 00:00:00 ora_dbw0_core

openGauss 单进程多线程服务器模式运行

[omm@node1 ~]$ ps -ef|grep gaussdb
omm 11791 1 99 08:58 pts/0 00:03:17
/opt/openGauss/app/bin/openGauss -D /openGauss/data/db1
[omm@node1 ~]$ ps -T -p 11791
PID SPID TTY TIME CMD
11791 11791 pts/0 00:00:06 gaussdb
11791 11796 pts/0 00:00:00 syslogger
11791 11798 pts/0 00:00:00 alarm
11791 11827 pts/0 00:00:00 checkpointer
11791 11829 pts/0 00:00:01 pagewriter
11791 11832 pts/0 00:00:00 bgwriter
11791 11835 pts/0 00:02:47 WALwriter
11791 11837 pts/0 00:00:00 AVClauncher
11791 11839 pts/0 00:00:00 statscollector
11791 11840 pts/0 00:00:00 snapshotworker
11791 11842 pts/0 00:00:02 ashworker
11791 11843 pts/0 00:00:01 TrackStmtWorker
11791 11844 pts/0 00:00:00 auditor
11791 11846 pts/0 00:00:00 faultmonitor

openGauss 体系结构-“实例”

openGauss体系结构以及对象管理_对象管理_05

oepnguass逻辑结构

openGauss是一种关系型数据库管理系统(RDBMS),即就是说,它是一种用于管理存储在关系中的数据的系统(关系实际上是表的

数学术语);

表一个数据库集簇由多个用户(Users)和多个数据库(Databases)组成,这些数据库和用户共用同一套数据库实例以及相关配置文件。由多个行与列组成,被分组存储成为了数据库;

一个由单个openGauss服务器实例管理的数据库集合组成一个数据库集簇(Database Cluster);

openGauss体系结构以及对象管理_oracle_06

4、表空间管理

4.1 表空间概念

表空间概念:

在openGauss中,表空间是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目

录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。

openGauss的两个默认表空间:

pg_default, pg_global

表空间pg_default:用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。

对应存储目录 $PGDATA/base/

表空间pg_global: 用来存放系统字典表;对应存储目录 $PGDATA/global/

4.2 表空间优点

表空间的优点:

通过使用表空间,管理员可以控制一个数据库安装的磁盘布局。这样有以下优点:

● 表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能。

一个频繁使用的索引可以放在性能稳定且运算速度较快的磁盘上,比如一种固态设备。

一个存储归档的数据,很少使用的或者对性能要求不高的表可以存储在一个运算速度较慢的磁盘上。

● 管理员通过表空间可以设置占用的磁盘空间。用以在和其他数据共用分区的时候,防止表空间占用相同分区上的其他空间。

● 表空间可以控制数据库数据占用的磁盘空间。当表空间所在磁盘的使用率达到90%时,数据库将被设置为只读模式,当磁盘使用率

降到90%以下时,数据库将恢复到读写模式。

建议:用户使用数据库时,通过后台监控程序或者Database Manager进行磁盘空间使用率监控,以免出现数据库只读情况。

● 表空间对应于一个文件系统目录,假定数据库节点数据目录/pg_location/mount1/path1是用户拥有读写权限的空目录。

使用表空间配额管理会使性能有30%左右的影响,MAXSIZE指定每个数据库节点的配额大小,误差范围在500MB以内。请根据实际

的情况确认是否需要设置表空间的最大值

语法:

postgres=# \h create tablespace
Command: CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name
[ OWNER user_name ] [ RELATIVE ] LOCATION 'directory' [ MAXSIZE 'space_size' ]
[with_option_clause];
where option_clause can be:
WITH ( filesystem= { 'systemtype '| " systemtype " | systemtype }
[ { , address = { ' ip:port [ , ... ] ' | " ip:port [ , ... ] "} } ]
, cfgpath = { 'path '| " path " } ,storepath = { 'rootpath '| " rootpath "}
[{, random_page_cost = { 'value '| " value " | value }}]
[{,seq_page_cost = { 'value '| " value " | value }}])

表空间管理:

一、实验环境准备

1、创建用户jack:

CREATE USER jack IDENTIFIED BY 'huawei@1234';

2、创建表空间:

CREATE TABLESPACE fastspace owner jack RELATIVE LOCATION 'tablespace/tablespace_1';

#创建有容量大小限制的表空间

#create tablespace tbs2 relative location 'tablespace/tbs2' maxsize '100G';

3、将“fastspace”表空间的访问权限赋予数据用户jack:

GRANT CREATE ON TABLESPACE fastspace TO jack;

4、删除表空间:

drop tablespace tbs4;

说明:删除表空间的前提条件是该表空间内容为空。

二、具体操作

1、用jack用户登录数据库 \c postgres jack;

2、在指定表空间创建表CREATE TABLE foo(i int) TABLESPACE fastspace;

或先使用set default_tablespace设置默认表空间,再创建表:

SET default_tablespace = 'fastspace';

CREATE TABLE foo2(i int);

3、查看创建的表:

SELECT * FROM pg_tables where tablename like 'foo%';

4、查询表空间

方式1:检查pg_tablespace系统表。如下命令可查到系统和用户定义的全部表空间。

SELECT spcname FROM pg_tablespace;

方式2:使用gsql程序的元命令查询表空间 : \db

5、询表空的oid和物理位置信息

\db

select oid,* from pg_tablespace;

select * from pg_tablespace_location((select oid from pg_tablespace where spcname='fastspace'));

6、查询表空间使用

查询表空间的当前使用情况 SELECT PG_TABLESPACE_SIZE('fastspace');

7、修改表空间

执行如下命令对表空间fastspace重命名为fspace。 ALTER TABLESPACE fastspace RENAME TO jspace;

三、实验环境清理

1、删除表foo和foo2:DROP TABLE jack.foo;DROP TABLE jack.foo2;

2、删除表空间: DROP TABLESPACE jspace;

3、删除用户jack: DROP USER jack CASCADE;

数据库管理

前提条件:

用户必须拥有数据库创建的权限(createdb)或者是数据库的系统管理员权限才能创建数据库。

背景信息:

• 初始时,openGauss包含两个模板数据库template0、template1,以及一个默认的用户数据库postgres。postgres默认的

兼容数据库类型为A(Oracle),该兼容类型下将空字符串作为NULL处理。

DBCOMPATIBILITY [ = ] compatibility_type:指定兼容的数据库的类型。取值范围: A、B、C、PG。分别表示兼容

Oracle、MySQL、Teradata和PostgreSQL。但是C目前已经放弃支持,因此常用的取值是A、B、PG,默认兼容A。

• CREATE DATABASE创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使

用template0来创建。

• openGauss允许创建的数据库总数目上限为128个。

• 数据库系统中会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。一个

openGauss中存在多个数据库时,需要通过-d参数指定相应的数据库实例进行连接。

注意事项:

如果数据库的编码为SQL_ASCII,则在创建数据库对象时,如果对象名中含有多字节字符(例如中文),超过数据库对象名长

度限制(63字节)的时候,数据库将会将最后一个字节截断,可能造成出现半个字符的情况。

针对这种情况,请遵循以下条件:

• 保证数据对象的名称不超过限定长度。

• 修改数据库的默认存储编码集(server_encoding)为utf-8编码集。

• 不要使用多字节字符做为对象名。

• 创建的数据库总数目不得超过128个。

• 如果出现因为误操作导致在多字节字符的中间截断而无法删除数据库对象的现象,请使用截断前的数据库对象名进行删除操

作,或将该对象从各个数据库节点的相应系统表中依次删掉。

标签:00,对象,11791,tablespace,空间,openGauss,pts,数据库,体系结构
From: https://blog.51cto.com/u_13482808/7974645

相关文章

  • 如何测试一个空的JavaScript对象?
    内容来自DOChttps://q.houxu6.top/?s=如何测试一个空的JavaScript对象?在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:vara={};我如何检查是否确实如此?你可以使用带有Object.hasOwn(ECMA2022+)测试的for…in循环来检查一个对象是否有任何自己的属性:functio......
  • 实验2 类和对象
    实验任务3Complex.hpp#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doubler=0,doublei=0){real=r;imag=i;}Complex(constComplex&x){real=x.real......
  • 试验2 类和对象——基础编程2
    任务31.代码complex.hpp:1#ifndefcomplex_H2#definecomplex_H34#include<iostream>5#include<cmath>6usingnamespacestd;78classComplex9{10public:11Complex(doublex=0,doubley=0):real{x},imag{y}{}12......
  • make clean命令清理在不同目录中编译的对象
    gnu-makemakefile UsingMakefiletocleansubdirectories是否可以从父目录执行makeclean,而该父目录又递归清除所有子目录,而不必在每个子目录中都包含makefile?例如,当前在我的Makefile中,我有类似以下内容:123456789SUBDIRS=src,src1.PHONY:cleansubdirs$(S......
  • map遍历数组返回包含所需字段的对象
    假如dataList为后台假数据,我想分别得到number和chargeTime、number和freeTime,来分别画图,就可以这么写,当然直接for循环更可以。1constdataList={2list:[3{4number:"0",5chargeTime:2,6freeTime:57......
  • DM8通过触发器实现用户建表自动为其他用户授予对象权限
    需求业务用户A会周期性的创建临时表,这部分临时表又有需要被其他用户B访问的需求。手动授权仅能将授权时存在的表进行授权,我们尝试通过触发器实现。处理方法--前提1:DDL_TV_TRIGGER=1(默认0,静态参数,添加后需要重启数据库)--前提2:SP_INIT_DBMS_SCHEDULER_SYS(1);/*SYSDBA创......
  • javascript 数组对象根据id去重的几种方法
    例如:想去除重复id为1的项arr=[{id:1,name:'张三',age:20},{id:1,name:'张三',age:20},{id:2,name:'李四',age:20},{id:3,name:'马五',age:20},];方法一通过forEach再通过some方法判断数组是否包含当前对象id,不包含则添加so......
  • python基础-面向对象3
    目录1.继承补充1.1mro和c3算法1.2py2和py3继承区别2.内置函数补充3.异常处理3.1异常细分3.2自定义异常和抛出异常3.3finally和else3.3.1特殊的finally3.3.2else3.3.3traceback3.4异常练习题4.反射4.1一切皆对象4.2import_module+反射5.练习题1.继承补充......
  • python基础-面向对象2
    目录1.成员1.1变量1.2方法1.3属性2.成员修饰符3.对象嵌套4.特殊方法5.练习题1.成员面向对象中的所有成员如下:变量实例变量类变量方法绑定方法类方法静态方法属性1.1变量实例变量,属于对象,每个对象中各自维护自己的数据类变量,属于类,可以被所有对象......
  • c#中string字符串转为json对象
    string转json//字符串转jsonpublicstaticvoidstrJson(){stringjsonText="{"shenzheng":"深圳","beijing":"北京","shanghai":[{"zj1":"zj11","zj2":"zj22"},"zjs"......