1 数据库链接
1.1 主备链接?
1.1.1 jdbc:gaussdb://host1:port1,host2:port2/database?param1=value1¶m2=value2
2 基本概念
2.1 CN(仅分布式有)
2.1.1 Coordinator Node:协调节点CN,负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行
2.2 GTM(仅分布式有
2.2.1 GTM:全局事务管理器(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳、Sequence信息等全局唯一的信息。
2.3 DN
2.3.1 Data Node:数据节点DN,负责存储业务数据、执行数据查询任务以及向CN返回执行结果。
2.4 ETCD -仅主备模式
2.4.1 ETCD:分布式键值存储系统(Editable Text Configuration Daemon)。用于共享配置和服务发现(服务注册和查找)-
2.5 CMS-仅主备模式
2.5.1 CMS:集群管理模块(Cluster Manager)。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。
3 操作指南
3.1 DBMind
3.1.1 DBMind提供了GaussDB数据库管理运维能力,包括监控、诊断、优化等,满足用户或者DBA日常开发和运维的绝大部分需求。
3.1.2 本质是Prometheus体现
3.1.3
3.1.4 主要部件
DBMind Server:DBMind的主服务(核心主进程),可用于定期离线计算,包括慢SQL根因分析、时序预测等。
Prometheus:Prometheus监控指标存储的服务器。
元数据库:主服务在离线计算结束后,将计算结果存储在此处。
gaussdb_exporter:从GaussDB数据库节点上采集监控指标,供DBMind Server进行计算。
node_exporter:Prometheus官方提供的exporter, 可用于监控该节点的系统指标,如CPU和内存使用情况。
cmd_exporter:在GaussDB数据库实例后台节点上执行命令行,并采集该命令行的执行结果,同时,也尝试将数据库日志内容转化为监控指标;例如通过执行cm_ctl命令,查看数据库集群的状态。
reprocessing_exporter:用于对Prometheus采集到的指标进行二次加工处理,例如计算CPU使用率等。
elasticsearch:用于智能运维全量SQL功能,提供全量SQL索引数据的存储和检索能力。
3.1.5 趋势预测
趋势预测功能针对重要的资源类指标,对其增长趋势进行监控,并进行预测,提前发现其潜在风险。
3.2 优化
3.2.1 SQL Patch
类似oracle hint 能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整
DBE_SQL_UTIL.create_hint_sql_patch接口创建的用于调优的Hint PATCH可能会影响错误命中语句的性能,使用DBE_SQL_UTIL.create_abort_sql_patch接口创建的用于避险的Abort PATCH需要谨慎使用
使用参考
https://support.huaweicloud.com/intl/zh-cn/distributed-devg-v8-gaussdb/gaussdb-12-1646.html
3.2.2 SQL诊断
SQL全链路信息
有一个sql具体消耗:cpu、网络、io等等
3.2.3 采集并诊断慢SQL
数据源为当前SQL数据、历史SQL数据、模板采集数据时,采集最多1000条SQL。
SQL采集的SQL最小执行时长的默认值,可以通过修改系统参数“log_min_duration_statement”进行配置
3.2.4 WDR报告-类似oracle awr
https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-1781.html
主要内容
Database Stat
Load Profile
Instance Efficiency Percentages
Top 10 Events by Total Wait Time
Wait Classes by Total Wait Time
Host CPU
IO Profile
Memory Statistics
Time Model
SQL Statistics
Wait Events
Cache IO Stats
Utility status
Object stats
Configuration settings
SQL Detail
DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源
3.2.5 ASP报告信息-TOP SESSION & TOP SQL
System Load信息
Top Client信息
Active sessions信息
Top Events Summary信息
Top Events Graph信息
Top Sessions with Top event信息
Top Sessions with Top event split by slots信息
Top Sessions with Top SQL信息
Top Sessions with Top SQL split by slots信息
Top final blocking sessions with Top event split by slots信息
Top blocked sessions with Top SQL split by slots信息
Top SQL with Top event信息
Top SQL with Top event split by slots信息
Top SQL Text信息
https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-1798.html
3.2.6 对象分析
和oracle表分析不同,这里是分析使用情况,可用通过分析多个表找出热点对象
3.2.7 索引推荐
索引推荐功能可以根据SQL采集和自定义输入的DML语句,生成对SQL执行表现进行优化的建议。
通过“慢SQL采集”页签索引推荐
3.2.8 Session性能诊断
查看session之间的阻塞关系
select sessionid, block_sessionid from pg_thread_wait_status;
采样blocking session信息
select sessionid, block_sessionid from DBE_PERF.local_active_session;
Final blocking session展示
select sessionid, block_sessionid, final_block_sessionid from DBE_PERF.local_active_session;
最耗资源的wait event
SELECT s.type, s.event, t.count
FROM dbe_perf.wait_events s, (
SELECT event, COUNT(*)
FROM dbe_perf.local_active_session
WHERE sample_time > now() - 5 / (24 * 60)
GROUP BY event)t WHERE s.event = t.event ORDER BY count DESC;
查看最近五分钟较耗资源的session把资源都花费在哪些event上。
SELECT sessionid, start_time, event, count
FROM (
SELECT sessionid, start_time, event, COUNT(*)
FROM dbe_perf.local_active_session
WHERE sample_time > now() - 5 / (24 * 60)
GROUP BY sessionid, start_time, event) as t ORDER BY SUM(t.count) OVER (PARTITION BY t. sessionid, start_time)DESC, t.event;
最近五分钟比较占资源的SQL把资源都消耗在哪些event上
SELECT query_id, event, count
FROM (
SELECT query_id, event, COUNT(*)
FROM dbe_perf.local_active_session
WHERE sample_time > now() - 5 / (24 * 60)
GROUP BY query_id, event) t ORDER BY SUM(t.count) OVER (PARTITION BY t.query_id ) DESC, t.event DESC;
3.3 查看系统参数
3.3.1 SELECT * FROM pg_settings;
3.3.2 SHOW ALL;
3.3.3 SHOW server_version;
SELECT * FROM pg_settings WHERE NAME=‘server_version’;
4 schema
4.1 存放系统对象和sql package
4.2 主备和分布式有所不同
4.2.1 主备 参考URL
https://support.huaweicloud.com/intl/zh-cn/centralized-devg-v8-gaussdb/gaussdb-42-1378.html
4.2.2 数据库禁止在提供功能接口的Schema下创建用户的业务数据,包括但不限于表、函数等(dbe_, pkg_)。
4.3 重要schema
4.3.1 Information Schema
信息模式本身是一个名为information_schema的模式。这个模式自动存在于所有数据库中。信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。这个模式的拥有者是初始数据库用户,但是所有用户仅有使用权限,没有创建表、函数等对象的权限。
信息模式兼容PG
4.3.2 DBE_PERF Schema
https://support.huaweicloud.com/intl/zh-cn/centralized-devg-v8-gaussdb/gaussdb-42-1386.html
DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。
GLOBAL_开头的视图,代表从数据库节点请求数据,并将数据追加对外返回,不会处理数据
SUMMARY_开头的视图,代表是将数据库内的数据概述,多数情况下是返回数据库节点(有时只有数据库主节点的)的数据,会对数据进行加工和汇聚。
非这两者开头的视图,一般代表本地视图,不会向其它数据库节点请求数据。
涵盖对象
- OS
- Instance
- Memory
- File
- Object
- Workload
- Session/Thread
- Transaction
- Query
- Cache/IO
- Utility
- Lock
- Wait Events
- Configuration
- Operator
- Workload Manager
- Global Plan
- cache
- RTO & RPO
- AI Watchdog
4.3.3 WDR Snapshot Schema
WDR Snapshot在启动后(打开GUC参数enable_wdr_snapshot),会在用户表空间"pg_default",数据库"postgres"下的Snapshot Schema中创建对象,用于持久化WDR快照数据
WDR Snapshot原信息
WDR Snapshot 数据表
- WDR Snapshot数据表命名原则: snap_{源数据表}。
- WDR Snapshot数据表来源为DBE_PERF
Schema下的视图
4.3.4 DBE_PLDEBUGGER Schema
DBE_PLDEBUGGER Schema下的系统函数用于调试存储过程,目前支持的接口及其描述如下所示。
仅管理员有权限执行这些调试接口,但在该schema上无修改和创建新函数的权限。普通用户只能调试在public schema或用户创建schema下的非系统函数,禁止普通用户调试系统函数。
4.3.5 DB4AI Schema
DB4AI模式在AI特性中主要是用来存储和管理数据集版本
4.3.6 DBE_PLDEVELOPER
DBE_PLDEVELOPER下系统表用于记录PL/SQL包、函数及存储过程编译过程中需要记录的信息。
gs_errors
用于记录PL/SQL对象(存储过程、函数、包、包体)编译过程中遇到的报错信息
4.3.7 DBE_SQL_UTIL Schema
DBE_SQL_UTIL模式存储了用于管理SQL PATCH的工具,包括创建、删除、开启、禁用SQL PATCH等系统函数
4.4 其它schema
4.4.1 blockchain
用于存储账本数据库特性中创建防篡改表时自动创建的用户历史表。
4.4.2 db4ai
用于管理AI训练中不同版本的数据信息。
4.4.3 dbe_perf
DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户和监控管理员具有模式dbe_perf的权限,有权查看该模式下的视图和函数。
4.4.4 dbe_pldebugger
用于调试PL/SQL函数及存储过程。
4.4.5 snapshot
用于管理WDR snapshot的相关的数据信息,默认初始化用户或监控管理员用户可以访问。
4.4.6 sqladvisor
用于分布列推荐,集中式不可用。
4.4.7 sys
用于提供系统信息视图接口。
4.4.8 pg_catalog
用于维护系统的catalog信息,包含系统表和所有内置数据类型、函数、操作符。
4.4.9 pg_toast
用于存储大对象(系统内部使用)。
4.4.10 public
公共模式,用于存储公共对象。search_path参数缺省时,如果存在用户同名的模式则将创建的表(以及其他对象)默认创建到同名模式下,不存在用户同名模式则自动放入public模式。
4.4.11 pkg_service
用于管理package服务相关信息。
4.4.12 pkg_util
用于管理package工具相关信息。
4.4.13 dbe_raw
高级功能包dbe_raw,用于raw类型数据的转化、取子串、求长度等操作。
4.4.14 dbe_session
高级功能包dbe_session,用于设置指定属性的值(value),并支持用户查询校验。
4.4.15 dbe_lob
高级功能包dbe_lob,用于大文件(clob/blob)的读取、写入、复制等操作。
4.4.16 dbe_match
高级功能包dbe_match,用于字符串相似度的比较。
4.4.17 dbe_task
高级功能包dbe_task,用于作业任务的调度包括提交任务、取消任务、同步任务状态、更新任务信息等可以使数据库定期执行特定的任务。
4.4.18 dbe_sql
高级功能包dbe_sql,用于执行动态sql,可以在应用的运行时间构建查询和其他命令。
4.4.19 dbe_file
高级功能包dbe_file,用于数据库外部文件的读取、复制、写入、删除、重命名等。
4.4.20 dbe_output
高级功能包dbe_output,用于打印输出信息。
4.4.21 dbe_random
高级功能包dbe_random,用于生成随机种子和随机数。
4.4.22 dbe_application_info
高级功能包dbe_application_info,用于记录客户端信息。
4.4.23 dbe_utility
高级功能包dbe_utility,用于存储过程中调用调试工具,例如打印错误堆栈等。
4.4.24 dbe_scheduler
高级功能包dbe_scheduler,用于创建定时任务,通过程序(program)、调度(schedule)使数据库定期执行特定的任务。也可以通过授权、提供证书执行数据库外部任务。
4.4.25 information_schema
用于存储有关当前数据库中定义的对象的信息。
4.4.26 dbe_pldeveloper
用户存储过程编译调试。
4.4.27 dbe_xmlgen
高级功能包dbe_xmlgen,用于将查询结果转换成xml字符串。
4.4.28 dbe_stats
高级功能包dbe_stats,用于管理统计信息。
4.4.29 dbe_describe
高级功能包dbe_describe,用于查询存储过程或函数的参数信息。
4.4.30 dbe_sql_util
SQL运维功能,目前包含SQL Patch和Plan Management的运维接口。