openGauss 学习笔记与资源整理(20260626)
一、基础概念与体系结构
-
- 开源关系型数据库
- 兼容SQL标准
- 支持行存、列存和内存引擎
-
- 环境要求: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
-
- 单进程多线程模型
- SQL执行流程:解析 → 重写 → 优化 → 执行
- 存储引擎:行存、列存、内存引擎(MOT)
- 事务管理:MVCC多版本并发控制
-
- 数据库管理:
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;
- 数据库管理:
-
- 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;
- DDL语句:
-
六、华为云数据库GaussDB(for openGauss)
- 分布式架构:CN协调节点 + DN数据节点
- 企业级特性:跨AZ容灾、AI优化器
- 云原生集成:OBS存储、自动备份
二、运维与配置
-
postgresql.conf
:核心参数配置pg_hba.conf
:客户端访问控制- 动态生效命令:
gs_guc reload -N all -I all -c "参数=值"
-
视图名称 功能描述 pg_stat_activity
实时会话监控 dbe_perf.statement
SQL执行历史 pg_locks
锁等待关系 GS_MATVIEW
物化视图元数据 -
gsql
:命令行客户端gs_dump
/gs_restore
:逻辑备份恢复gs_basebackup
:物理备份gs_generate
:性能报告生成
三、21天实训课程
第一周:基础操作
-
第一天作业: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');
-
SELECT * FROM products WHERE category='toys';
-
第三天作业:openGauss创建数据库、修改数据库属性和删除数据库
CREATE DATABASE tpcc1; ALTER DATABASE tpcc1 RENAME TO tpcc10;
第二周:高级功能
第三周:性能优化与高级特性
四、认证与进阶
- 考试模块:体系架构(30%)、SQL开发(25%)、运维管理(45%)
- 重点内容:WDR报告生成、主备切换、参数调优
后续学习路径规划
阶段一:基础巩固(1-2周)
主题 | 重点内容 | 实践资源 |
---|---|---|
安装部署 | 单机/集群安装 | 安装部署指南 |
对象管理 | 表空间/模式管理 | 数据库及对象管理 |
SQL基础 | DDL/DML/查询优化 | SQL基础教程 |
阶段二:进阶实战(3-4周)
-
性能调优
- 执行计划解析:
EXPLAIN VERBOSE
- 列存压缩优化:
WITH (COMPRESSION=low)
- WDR报告分析:
gs_generate -D /data -o wdr.html
- 执行计划解析:
-
高可用部署
-
分布式实践
- 部署3节点集群
- 数据分片测试
- 读写分离配置
阶段三:云服务与认证
-
华为云GaussDB实操
任务 目标 参考资源 实例创建 配置计算存储分离架构 GaussDB文档 数据迁移 使用DRS迁移MySQL至GaussDB 迁移指南 容灾测试 模拟AZ故障验证RPO=0 容灾方案 -
认证备考(HCIA-openGauss)
模块 考试占比 重点内容 学习建议 体系架构 30% 线程模型/存储引擎 掌握体系结构详解 SQL开发 25% 分区表/向量检索 完成第18-20天作业 运维管理 45% 备份恢复/参数调优 实践配置文件篇
阶段四:扩展学习资源
-
官方文档
-
在线实验
-
社区资源
学习路线图:
学习建议:
- 按日完成21天实训,重点练习Day14(备份恢复)、Day18(分区表)
- 搭建电商库,实践OLTP+OLAP混合负载
- 关注考试中的"WDR报告生成"和"主备切换"操作题
- 每周参与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方案,支持一主多备架构 |
安全控制 | 三权分立(安全管理员、审计管理员、数据库管理员)、数据加密、动态数据脱敏 |
最佳实践建议:
- 分区键选择高频查询条件字段(如日期)
- OLAP场景优先使用列存储+压缩
- 频繁更新的表禁用自动analyze,改用定时任务
- 使用COPY替代INSERT批量导入数据
- 定期执行REINDEX SYSTEM清理系统表索引
此笔记涵盖openGauss核心操作和优化技巧,建议结合官方文档实操练习:
📚 openGauss 5.1 官方文档