opengauss

opengauss

元命令#

\db:查看数据库

\d:查看用户

\copy:数据导入导出

目录结构#

目录/文件 父目录 用途
global 实例数据目录 包含集簇方位的表的子目录
pg_audit 数据库审计日志目录
pg_log 保存数据库节点实例的运行日志目录
pg_xlog 保存预习日志
postgresql.conf 参数文件
pg_hba.conf 客户端认证控制文件
postmaster.opts 记录服务器启动时使用的命令行参数
bin 存放数据库二进制文件的目录
lib 存放数据库的库文件的目录
share 存放数据库运行时需要的公共文件,如配置文件模板
data DBnode实例的数据目录,主实例目录名为'data_dnxxx',备实例'data_dnSxxx'
base 包含每个数据库对于的子目录

内存结构#

  • share buffer:数据库服务器的共享缓冲区。
  • cstore buffer:列存所使用的共享缓冲区。在列存表场景中基本不会用到share buffer
  • MOTMenory-Optimized Table内存优化表,所有数据和索引都在内存中。
  • wal buffer:用于还未写入磁盘的 WAL(预写式日志) 日志的共享内存。
  • maintain_work_mem:维护操作如VACUUM、创建索引,修改表等。
  • work_mem:用于查询操作,如排序或者哈希表等。
  • temp buffer:数据库会话使用的临时缓存,用于访问临时表。

VACUUM是一种数据库操作,用于回收已删除的数据占用的空间并优化数据库性能

主要线程#

  • GaussMaster线程:openGauss的管理线程,也称为postmaster线程。用于数据库启停、消息转发等管理工作。
  • pagewriter线程:负责将脏页数据从内存刷到磁盘中。
  • walwriter线程:负责将内存中的预写日志(WAL)页数据刷新到预写日志文件中,确保已提交的事务都被永久记录,不会丢失。
  • checkpoint线程:周期性触发,每次触发会将全部脏页面刷到磁盘中。

逻辑架构#

软件类型 配置描述
OM 运维管理模块(Operation Manager)。提供数据库运维日常、配置管理的管理接口、工具。
客户端驱动 客户端驱动(client Driver)。用于接受来自应用的访问请求,并向应用返回结构。
opengauss opengauss(Datanode)。负责存储业务数据,执行查询任务以及返回查询结构。
Storage 服务器的本地存储资源,持久化存储数据.

逻辑结构#

  • Tablespace:表空间,是一个目录,存在多个,存储着它所包含的数据库的各种物理文件,可以对应多个Database;
  • Database:数据库,用于管理各类数据对象,个数据之间相互隔离,数据库款管理的对象可以分布在多个Tablespace上个.
  • Datafile Segment:数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储.
  • Table:表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中.
  • Block:数据块,是数据库管理的基本单位,默认大小为8KB。

优化器#

  • RBO是基于规则的优化器
    • 根据表结构和SQL文本生成执行计划,不受表的数据的影响。
  • CBO是基于成本的优化器
    • 根据统计信息生成执行计划。
  • ABO是基于AI的优化器
RBO优化器(以废弃)
  • 基于规则的优化器
    • 优化器根据可用的访问路径和这些访问路径的等级选择执行计划,就是在优化器里面嵌入若干
  • 种规则,执行的sql语句符合哪种规则,则按照哪种规则制订出相应的执行计划。
    • 规则主要分为以下几类:
    • 索引选择
    • 排序消除、MIN/MAX优化
    • 连接顺序选择
    • 子查询重写
    • 条件重写
CBO优化器(opengauss采用的)
  • CBO优化器分为三个重要组成部分:
    • 查询转换
      • 对于某些语句,查询转换器将原始SQL重写为具有较低成本的等价SQL语句,并判断是否有效。
    • 代价评估
      • 用于确定给定执行计划的总体成本。
    • 执行计划生成
      • 通过尝试不同的访问路径,连接方法和连接顺序来探索SQL的各种可选执行计划。
  • CBO优化器评估执行代价依赖于统计信息,数据库根据表的元组数、字段宽度、NULL记
    录比率、distinct值、MCV值等表的特征值,以及一定的代价计算模型,计算出每一个执
    行步骤的不同执行方式的输出元组数和执行代价(C0st),进而选出整体执行代价最小
    首元组返回代价最小的执行方式进行执行。
  • 使用CBO时,必须保证为表和相关的索引搜集足够的统计数据。对数据经常有增、删、
    改的表最好定期对表和索引进行分析。
  • 数据库掌握了充分反映实际的统计数据,才有可能做出正确的选择。

行存和列存表#

  • 行存表:针对每一行去存储,update和insert效率较高,适合查询一行所有的属性
  • 列存表:针对每一列去存储,适合海量数据的存储,减少IO,效率高。insert和update效率低

可以使用ORIEBTATION指定存储方式,例如:ORIENTATION=COLUMN,默认是行存表。

使用COMPRESSION关键字去指定压缩等级。

分区技术#

支持范围分区、列表分区还有HASH分区。 `

  • 查询分区表select partition PARTITION(分区名)
  • alert table truncate partition

极致RTO#

  • RTO:复原时间目标
  • RPO:复原点目标

高安全#

  • 全密态:数据在传输、运算、存储时都是密文
动态脱敏:

脱敏函数名

  1. creditcardmasking
  2. basicemailmasking
  3. fullemailmasking
  4. alldigitsmasking
  5. shufflemasking
  6. randommasking
  7. maskall
访问控制

基于角色的控制管理(RBAC)

  • RBAC模型中用户、角色、权限的关系。
    • 一个用户可对应多个角色;
    • 一个角色可对应多个用户;
    • 一个角色可以拥有多个权限;
    • 一种权限可以被分配给许多个角色。

行级访问控制

不用用户的查询时不同的

打开行访问控制策略开关:
ALTER TABLE tablename ENABLE ROW LEVEL SECURITY;

MOT#

  • 内存设置需满足:(max_mot_.global_memory+max_mot_local_memory).+2GB<max_process_.memory
    • 全局内存是所有核共享的长期内存,主要用于存储所有的表数据和索引。
    • 本地内存是短期内存,主要由会话使用,用于处理事务及将数据更改存储到事务内存中,直到提交阶段。
  • 要使特定用户能够创建和访问MOT(DDL、DML、SELECT),以下语句只执行一次:RANT USAGE ON FOREIGN SERVER mot_server TO <user>;
  • 创建MOT:create FOREIGN table test(x int)[server mot_server];
  • 删除MOT:drop FOREIGN table test;

表空间#

  • 创建表空间

    postgres=#CREATE TABLESPACE fastspace RELATIVE LOCATION '/tablespace/tablespace_1';

  • “fastspace”为新创建的表空间;

  • “/tablespace/tablespace_1”为相对数据库节点数据目录,是用户拥有读写权限的空目录。

数据库系统管理员执行如下命令将“fastspace”表空间的访问权限赋予数据用户jack
postgres=#GRANT CREATE ON TABLESPACE fastspace TO jack;

  • 在表空间中创建对象

    • 如果用户拥有表空间的CREATE权限,就可以在表空间上创建数据库对象

      ​ 方法一:在指定表空间下创建表。

      postgres=#CREATE TABLE foo(i int)TABLESPACE fastspace;

    • 方法二:先设定默认表空间再创建表。

      postgres=#SET default_tablespace ='fastspace';

      postgres=#CREATE TABLE foo2(i int);

  • 查看表空间

    • 方式一:查看系统表pg_tablespace。
    • 方法二:使用gsql的元命令查询\db。
查看表空间使用率

查询表空间的当前使用情况。
postgres=#SELECT PG_TABLESPACE_SIZE('example');
计算表空间使用率:表空间使用率=PG TABLESPACE SIZE/表空间所在目录的磁盘
修改表空间
口执行如下命令对表空间fastspace重命名为fspace。
postgres=#ALTER TABLESPACE fastspace RENAME TO fspace;
删除表空间
postgres=#DROP TABLESPACE fspace;

系统表#

PG ATTRIBUTE:表字段的信息
PG AUTHID:角色信息
PG CLASS:对象信息之间的关系
PG CONSTRAINT:检测约束、主键、唯一和外键约束
PG DATABASE:可用数据库

作者:qianyuzz

出处:https://www.cnblogs.com/qianyuzz/p/17908409.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   qianyuzz  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示