openGauss-华为开源数据库8小时学习

作为一个Oracle数据库管理员,在当下国产数据库可以说是百花齐放的时代环境中,非常需要去了解当今国内数据库的发展与现状情况。
偶然的时刻了解到8小时玩转openGauss训练营(第二期)的培训交流的机会,刚好也是周末的时间,也刚好有空闲的时间,就参加学习了openGauss数据库方面的情况。

OG 体系架构

openGauss提供面向多核的极致性能、全链路的业务和数据安全、基于AI的调优和高效运维的能力,全面友好开放,携手伙伴共同打造全球领先的企业级开源关系型数据库。
它是基于PostgreSQL 9.2.4内核魔改多线程结构。

特性

  • JIT模型
  • 支持增量|全量检查点
  • 列存,行存和MOT
  • 全密态安全
  • AI4DB和DB4AI

部署高可用架构

架构图

主备HA

image-20210912204449245

两地三中心

image-20210912204539415

高可用报障

  • Switchover:主机运行正常,因为维护等需求进行switchover操作,switchover之后主
    机降备,备机升主并开始接管业务,这些操作需要主机和备机之间交互才能完成。
  • Failover:主机故障后,备机需要进行failover操作,failover后备机升主,开始接管业务;
    failover的过程是备机独立完成的,不需要和主机进行交互。

image-20210912204731263

switchover切换流程

image-20210912204804966

failover切换流程

image-20210912204826656

最佳实践

参数分类
动态参数

可以在线修改的参数

gs_ctl reload -D $DATADIR
# select pg_reload_conf();
需重启生效参数
gs_ctl restart -D $DATADIR
gs_om -t restart
参数配置修改方式
SQL命令行修改
ALTER SYSTEM SET paraname TO value;
ALTER DATABASE dbname SET paraname TO value;
ALTER USER username SET paraname TO value;
SET paraname TO value;
gs_guc
gs_guc set -D datadir -c "paraname=value”
gs_guc set -N all -I all -c "paraname=value"
运维工具

image-20210912205459885

监控

Prometheus+Grafana 开源监控体系

image-20210912205624361

MOT

概述

  • 乐观并发控制(Optimistic Concurrency Control,简称OCC)

MOT (Memory-Optimized Table):使用OCC实现事务的并发控制的行存储引擎。

特性
  • 内存优化数据结构
  • 无锁事务管理
  • 无锁索引
  • NUMA感知,事务本地内存
  • 高效、可靠的持久化
  • 查询本机编译(JIT)

结构图

image-20210912210337892

事务管理

事务本地内存与全局内存
  • 全局内存(shared memory)是所有CPU核心共享的长期内存,主要用于存储所有表数据和索引
  • 本地内存是短期的私有内存,主要用于在会话中处理事务,并将数据更改存储在本地内存中,直到提交阶段。
无锁事务管理
  • 所有相关数据都会从全局内存复制到本地内存
  • 基于OCC算法,最小化全局内存上的争用时间
  • 事务完成后,此数据将从本地内存推回全局内存
乐观并发控制(OCC)事务机制

在事务期间(使用任何隔离级别),直到提交阶段,不会对记录加锁。优点:性能更高。缺点:可能被中止。如果另一个会话尝试更新相同的记录,则更新可能会失败,MOT在提交时通过版本检查机制检测冲突。

注意:当使用串行化或可重复读取隔离级别时,在使用悲观并发控制的引擎上也会发生类似的中止。

监控MOT

MOT全局内存
select mot_global_memory_detail();
MOT本地内存
select mot_local_memory_detail();
当前会话内存
select * 
from mot_session_memory_detail() 
where sessid = pg_current_sessionid();

WDR 报告

类似于Oracle Database产品中的AWR报告,常用于分析数据库基于等待事件方法论的性能问题。

数据保留时间

默认数据保留8天,每1小时自动创建一个快照。

管理

查看当前WDR snapshot列表
select * from snapshot.snapshot order by start_ts;
查看某次WDR snapshot中相关summary/global快照的时间花费
select * from snapshot.tables_snap_timestamp where snapshot_id = 1 order by start_ts;
手工创建WDR snapshot
select create_wdr_snapshot();
生产WDR报告
select generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, int report_type, int report_scope, int node_name );
说明
  • node_name – 结点级别report时候,指定node name; cluster级别省略或者指定为NULL
  • 要在postgres库内执行

性能优化思路

整体性能问题分析

image-20210912211642355

单SQL性能

image-20210912211721999

AI自治数据库特性

AI能力

AI in DBMS: 参数调优与诊断能力
  • 调优参数列表:根据不同的场景预设,用户也可以根据经验配置;
  • 调优方法概括:结合深度强化学习与全局优化算法,针对不同类别的参数进行细粒度调优。
  • 调优效果评估:观察benchmark的跑分结果,预置的benchmark丰富,极简可扩展。
AI in SQL:DB4AI

image-20210912212034823

总结

经过此次的学习,认识到国产数据库在技术和推广层面上越来越成熟和智能。

posted @ 2021-09-12 21:26  KuBee  阅读(703)  评论(0编辑  收藏  举报