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。
- MOT:Menory-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:复原点目标
高安全#
- 全密态:数据在传输、运算、存储时都是密文
动态脱敏:
脱敏函数名
- creditcardmasking
- basicemailmasking
- fullemailmasking
- alldigitsmasking
- shufflemasking
- randommasking
- 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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)