openGauss 学习笔记与资源整理(20260626)

openGauss 学习笔记与资源整理(20260626)

一、基础概念与体系结构

  1. 一、openGauss概述

    • 开源关系型数据库
    • 兼容SQL标准
    • 支持行存、列存和内存引擎
  2. 二、openGauss数据库的安装部署

    • 环境要求:CentOS 7.6+,4GB+内存
    • 安装步骤:
      # 下载安装包
      wget https://opengauss.org/zh/download/
      
      # 创建安装用户
      groupadd dbgrp
      useradd -g dbgrp omm
      
      # 解压安装
      tar -zxvf openGauss-x.x.x-CentOS-64bit.tar.gz
      cd simpleInstall
      ./install.sh -w "Password" --mode single -D /opt/data
      
  3. 三、openGauss体系结构及关键性组件

    • 单进程多线程模型
    • SQL执行流程:解析 → 重写 → 优化 → 执行
    • 存储引擎:行存、列存、内存引擎(MOT)
    • 事务管理:MVCC多版本并发控制
  4. 四、openGauss数据库及对象管理

    • 数据库管理
      CREATE DATABASE sales_db;
      ALTER DATABASE sales_db RENAME TO sales_2023;
      DROP DATABASE IF EXISTS old_db;
      
    • 表空间管理
      CREATE TABLESPACE sales_tbspc RELATIVE LOCATION 'tablespace/sales';
      ALTER TABLE orders SET TABLESPACE sales_tbspc;
      
    • 模式管理
      CREATE SCHEMA ecommerce;
      SET search_path TO ecommerce, public;
      
  5. 五、openGauss:SQL基础

    • DDL语句
      CREATE TABLE products (
        id INT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        price DECIMAL(10,2) CHECK (price > 0)
      );
      
    • DML语句
      INSERT INTO products VALUES (1, 'Laptop', 1200.00);
      UPDATE products SET price = 1100.00 WHERE id = 1;
      DELETE FROM products WHERE id = 1;
      
    • 查询语句
      SELECT name, price * 0.9 AS discount_price 
      FROM products 
      WHERE price > 500 
      ORDER BY price DESC 
      LIMIT 10;
      
  6. 六、华为云数据库GaussDB(for openGauss)

    • 分布式架构:CN协调节点 + DN数据节点
    • 企业级特性:跨AZ容灾、AI优化器
    • 云原生集成:OBS存储、自动备份

二、运维与配置

  1. openGauss查漏补缺 ## 配置文件篇

    • postgresql.conf:核心参数配置
    • pg_hba.conf:客户端访问控制
    • 动态生效命令:gs_guc reload -N all -I all -c "参数=值"
  2. openGauss查漏补缺 ## 系统表&视图篇

    视图名称功能描述
    pg_stat_activity实时会话监控
    dbe_perf.statementSQL执行历史
    pg_locks锁等待关系
    GS_MATVIEW物化视图元数据
  3. openGauss查漏补缺 ## 工具篇

    • gsql:命令行客户端
    • gs_dump/gs_restore:逻辑备份恢复
    • gs_basebackup:物理备份
    • gs_generate:性能报告生成

三、21天实训课程

第一周:基础操作

  1. 第一天作业:openGauss创建表、插入记录、查询记录和删除表基本使用

    CREATE TABLE products (prod_id INT, prod_name VARCHAR(20), category VARCHAR(20));
    INSERT INTO products VALUES (1601,'lamaze','toys'), (1666,'harry potter','toys');
    
  2. 第二天作业:openGauss查询、更新和删除基本使用

    SELECT * FROM products WHERE category='toys';
    
  3. 第三天作业:openGauss创建数据库、修改数据库属性和删除数据库

    CREATE DATABASE tpcc1;
    ALTER DATABASE tpcc1 RENAME TO tpcc10;
    
  4. 第四天作业:学习openGauss创建角色、修改角色属性、更改角色权限和删除角色

  5. 第五天作业:学习openGauss创建用户、修改用户属性、更改用户权限和删除用户

  6. 第六天作业:学习openGauss创建模式、修改模式属性和删除模式

  7. 第七天作业:表空间

第二周:高级功能

  1. 第八天作业:openGauss分区表

  2. 第九天作业:普通表索引

  3. 第十天作业:分区表索引

  4. 第十一天作业:openGauss视图

  5. 第十二天作业:openGauss数据类型

  6. 第十三天作业:openGauss导入数据

  7. 第十四天作业:备份与恢复

第三周:性能优化与高级特性

  1. 第十五天作业:存储过程&函数

  2. 第十六天作业:事务

  3. 第十七天作业:游标

  4. 第十八天作业:触发器

  5. 第十九天作业:统计信息、打印执行计划、垃圾收集和checkpoint

  6. 第二十天作业:全文检索

  7. 第二十一天作业:存储模型-行存和列存

四、认证与进阶

  1. openGauss考试
  • 考试模块:体系架构(30%)、SQL开发(25%)、运维管理(45%)
  • 重点内容:WDR报告生成、主备切换、参数调优

后续学习路径规划

阶段一:基础巩固(1-2周)

主题重点内容实践资源
安装部署单机/集群安装安装部署指南
对象管理表空间/模式管理数据库及对象管理
SQL基础DDL/DML/查询优化SQL基础教程

阶段二:进阶实战(3-4周)

  1. 性能调优

    • 执行计划解析:EXPLAIN VERBOSE
    • 列存压缩优化:WITH (COMPRESSION=low)
    • WDR报告分析:gs_generate -D /data -o wdr.html
  2. 高可用部署

    同步复制
    异步复制
    故障切换
    主节点
    备节点1
    备节点2
    新主节点
  3. 分布式实践

    • 部署3节点集群
    • 数据分片测试
    • 读写分离配置

阶段三:云服务与认证

  1. 华为云GaussDB实操

    任务目标参考资源
    实例创建配置计算存储分离架构GaussDB文档
    数据迁移使用DRS迁移MySQL至GaussDB迁移指南
    容灾测试模拟AZ故障验证RPO=0容灾方案
  2. 认证备考(HCIA-openGauss)

    模块考试占比重点内容学习建议
    体系架构30%线程模型/存储引擎掌握体系结构详解
    SQL开发25%分区表/向量检索完成第18-20天作业
    运维管理45%备份恢复/参数调优实践配置文件篇

阶段四:扩展学习资源

  1. 官方文档

  2. 在线实验

  3. 社区资源

学习路线图

基础
安装部署
SQL基础
对象管理
进阶
性能调优
高可用
分布式
云服务
GaussDB
迁移方案
认证
HCIA
HCIP

学习建议

  1. 按日完成21天实训,重点练习Day14(备份恢复)、Day18(分区表)
  2. 搭建电商库,实践OLTP+OLAP混合负载
  3. 关注考试中的"WDR报告生成"和"主备切换"操作题
  4. 每周参与openGauss社区技术分享

补充

以下是根据您提供的学习计划整理的 openGauss 数据库三周学习笔记,按知识点分类并补充完整操作示例和核心概念说明:


第一周:基础操作

1. 表管理
-- 创建表
CREATE TABLE products (
    prod_id INT PRIMARY KEY,
    prod_name VARCHAR(20) NOT NULL,
    category VARCHAR(20)
);

-- 插入记录 (多行)
INSERT INTO products VALUES 
(1601, 'lamaze', 'toys'),
(1666, 'harry potter', 'books');

-- 查询记录
SELECT * FROM products; 
SELECT prod_name FROM products WHERE category = 'toys';

-- 删除表
DROP TABLE products;
2. 数据库管理
-- 创建数据库
CREATE DATABASE tpcc1 ENCODING 'UTF8';

-- 修改数据库属性
ALTER DATABASE tpcc1 RENAME TO tpcc10;
ALTER DATABASE tpcc10 SET enable_hashjoin=off;  -- 禁用哈希连接

-- 删除数据库
DROP DATABASE tpcc10;
3. 角色管理
-- 创建角色
CREATE ROLE admin_role WITH PASSWORD 'Gauss@123' LOGIN;

-- 修改角色属性
ALTER ROLE admin_role RENAME TO dba_role;
ALTER ROLE dba_role WITH PASSWORD 'New@1234';

-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE tpcc10 TO dba_role;

-- 删除角色
DROP ROLE dba_role;
4. 用户管理
-- 创建用户
CREATE USER dev_user WITH PASSWORD 'User@123';

-- 修改用户属性
ALTER USER dev_user WITH PASSWORD 'Dev@2023';
ALTER USER dev_user ACCOUNT LOCK;  -- 锁定账户

-- 授权
GRANT SELECT ON products TO dev_user;

-- 删除用户
DROP USER dev_user;
5. 模式管理
-- 创建模式
CREATE SCHEMA sales_schema;

-- 修改模式属性
ALTER SCHEMA sales_schema RENAME TO retail_schema;

-- 设置搜索路径
SET search_path TO retail_schema, public;

-- 删除模式
DROP SCHEMA retail_schema CASCADE;  -- 级联删除所有对象
6. 表空间管理
-- 创建表空间 (需提前创建文件目录)
CREATE TABLESPACE tbs1 LOCATION '/data/openGauss/tbs1';

-- 在表空间中建表
CREATE TABLE orders (...) TABLESPACE tbs1;

-- 修改默认表空间
SET default_tablespace = tbs1;

-- 删除表空间
DROP TABLESPACE tbs1;

第二周:高级功能

1. 分区表
-- 范围分区
CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount DECIMAL(10,2)
PARTITION BY RANGE (sale_date) (
    PARTITION p2023 VALUES LESS THAN ('2024-01-01'),
    PARTITION p2024 VALUES LESS THAN ('2025-01-01')
);

-- 添加分区
ALTER TABLE sales ADD PARTITION p2025 VALUES LESS THAN ('2026-01-01');
2. 索引管理
-- 普通表索引
CREATE INDEX idx_prod_name ON products(prod_name);

-- 分区表本地索引
CREATE INDEX idx_sale_date ON sales(sale_date) LOCAL;

-- 重建索引
REINDEX INDEX idx_prod_name;
3. 视图
-- 创建视图
CREATE VIEW toys_view AS
SELECT * FROM products WHERE category = 'toys';

-- 更新视图基础数据
UPDATE toys_view SET prod_name = 'new lamaze' WHERE prod_id = 1601;
4. 数据类型
-- 常用类型示例
CREATE TABLE demo_types (
    id SERIAL,              -- 自增序列
    price NUMERIC(10,2),    -- 精确小数
    created TIMESTAMPTZ,    -- 带时区时间戳
    tags TEXT[],            -- 文本数组
    metadata JSONB          -- JSON二进制
);
5. 数据导入
-- 从CSV导入
COPY products FROM '/data/products.csv' 
WITH (FORMAT CSV, HEADER, DELIMITER ',');
6. 备份与恢复
# 逻辑备份
gs_dump -U omm -d mydb -f backup.sql

# 物理备份 (需开启归档)
gs_basebackup -D /backup/ -h primary_host -p 5432

第三周:性能优化与高级特性

1. 存储过程 & 函数
-- 创建函数
CREATE OR REPLACE FUNCTION get_toy_count() 
RETURNS INT AS $$
DECLARE
    toy_count INT;
BEGIN
    SELECT COUNT(*) INTO toy_count 
    FROM products WHERE category = 'toys';
    RETURN toy_count;
END;
$$ LANGUAGE plpgsql;

-- 调用函数
SELECT get_toy_count();
2. 事务控制
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;  -- 或 ROLLBACK
3. 游标
DECLARE 
    cur CURSOR FOR SELECT * FROM products;
    prod_record products%ROWTYPE;
BEGIN
    OPEN cur;
    LOOP
        FETCH cur INTO prod_record;
        EXIT WHEN NOT FOUND;
        RAISE NOTICE 'Product: %', prod_record.prod_name;
    END LOOP;
    CLOSE cur;
END;
4. 触发器
-- 创建审计触发器
CREATE TRIGGER audit_trigger
AFTER UPDATE ON products
FOR EACH ROW
EXECUTE FUNCTION log_changes();  -- 需预先创建log_changes函数
5. 性能诊断
-- 查看执行计划
EXPLAIN ANALYZE SELECT * FROM products WHERE category = 'toys';

-- 手动收集统计信息
ANALYZE products;

-- 垃圾收集
VACUUM FULL products;

-- 强制检查点
CHECKPOINT;
6. 全文检索
-- 创建全文索引
CREATE INDEX idx_fts ON documents 
USING gin(to_tsvector('english', content));

-- 全文检索查询
SELECT * FROM documents 
WHERE to_tsvector('english', content) @@ to_tsquery('openGauss & database');
7. 存储模型
-- 行存储表 (OLTP)
CREATE TABLE row_table (...) WITH (ORIENTATION = row);

-- 列存储表 (OLAP)
CREATE TABLE column_table (...) WITH (ORIENTATION = column);

核心概念总结

类别关键点
分区策略范围分区、列表分区、哈希分区,提升大表管理效率
索引类型B-tree(默认)、GIN(全文检索)、GiST(空间数据)、列存表每列自动建索引
事务特性ACID 兼容,支持读已提交(RC)和可重复读(RR)隔离级别
存储引擎行存适合高并发OLTP,列存适合分析型OLAP
高可用机制基于流复制的HA方案,支持一主多备架构
安全控制三权分立(安全管理员、审计管理员、数据库管理员)、数据加密、动态数据脱敏

最佳实践建议

  1. 分区键选择高频查询条件字段(如日期)
  2. OLAP场景优先使用列存储+压缩
  3. 频繁更新的表禁用自动analyze,改用定时任务
  4. 使用COPY替代INSERT批量导入数据
  5. 定期执行REINDEX SYSTEM清理系统表索引

此笔记涵盖openGauss核心操作和优化技巧,建议结合官方文档实操练习:
📚 openGauss 5.1 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值