GaussDB日常维护操作
GaussDB日常维护操作
- 日常维护检查
- 操作系统参数
- 数据库健康状态
- 日志收集
- 日志清理
- 应用连接数
- 表的例行维护
- 索引重建
- 慢SQL诊断
日常维护检查
实例状态检查:
#检查集群实例状态
gs_check -U omm -i CheckClusterStatecm_ctl query -Cvipd#检查主备DN的角色和同步状态
gs_ctl query -D <实例数据目录>
版本检查:
select version();
数据库对象占用磁盘空间检查:
select pg_size_pretty(pg_database_size('postgres')); --数据库占用磁盘空间select pg_size_pretty(pg_total_relation_size('pg_statistic')); --表数据+索引数据
select pg_size_pretty(pg_table_size('pg_statistic')); --表数据
select pg_size_pretty(pg_indexes_size('pg_statistic')); --索引数据
锁信息检查:
--检查锁信息
select * from pg_locks;--检查等待锁的线程状态
select * from pg_thread_wait_status where wait_status='acquire lock';
统计事件:
--事件的启动时间、事务启动时间、SQL启动时间、状态变更时间等信息
select backend_start,xact_start,query_start,state_change,state,datname,usename,application_name,client_hostname from pg_stat_activity;--统计当前的会话计数信息
select count(*) from pg_stat_activity;--查询使用内存最多的会话
select * from pv_session_memory_detail() order by usedsize desc limit 10;
对象检查:
--查看表和索引信息
\d+ <TABLE_NAME>
\d+ <INDEX_NAME>select * from pg_statistic; --统计信息
select * from pg_partition; --分区表信息
select * from pg_constraint; --约束信息
操作系统参数
进行操作系统参数的单项检查(本地执行加-L
):
gs_check -i CheckCPU #检查CPU使用率
gs_check -i CheckCpuCount #检查CPU核数
gs_check -i CheckMemInfo #检查内存大小
gs_check -i CheckSwapMemory #检查交换内存
gs_check -i CheckOSVer #检查操作系统版本
gs_check -i CheckKernelVer #检查内核版本
gs_check -i CheckSysParams #检查操作系统参数
数据库健康状态
检查集群状态:
gs_check -U omm -i CheckClusterStatecm_ctl query -Cvipd
支持按场景检查数据库健康状况:
gs_check -e inspect #例行巡检
gs_check -e health #健康检查
gs_check -e replace #节点替换检查
gs_check -e install #安装前检查
gs_check -e expand #扩容前检查
gs_check -e upgrade #升级前巡检
gs_check -e binary_upgrade #就地升级前检查
日志收集
数据库故障时,可以使用gs_collector工具收集日志。
gs_collector -h 22.89.73.13 -o /data/backup/ --begin-time="20240112 23:00" --end-time="20240113 01:00"
通过--begin-time
和--end-time
过滤不同时间段的日志,-h
指定要收集的DN节点(默认收集所有节点的日志),-o
指定收集日志保存的路径。
日志清理
$GAUSSLOG
路径下文件名不带current的历史日志可以定期清理。
应用连接数
查看最大连接数:
show max_connections;
查看当前连接数:
select count(*) from (select pg_stat_get_backend_idset() as backendid);
查看当前活跃会话:
select datname,pid,sessionid,usename,application_name,client_addr,state,query_id,query from pg_stat_activity;
杀会话:
--指定会话的pid,成功会返回t,否则返回f
select pg_terminate_backend(PID);
扩容最大连接数:
gs_guc set -Z datanode -N all -I all -c "max_connections=1024"
然后重启数据库。
表的例行维护
为了保证数据库的有效运行,数据库必须在插入、删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。
📖 VACUUM与VACUUM FULL的主要区别:
- VACUUM命令不会阻塞SELECT和DML语句,但是会阻塞ALTER TABLE语句。
- VACUUM命令只是将被删除的dead tuples标记为可重用,因此数据文件占用的实际物理磁盘空间并不会缩小。
- VACUUM FULL命令会阻塞对表的所有读写操作,包括SELECT语句。
- VACUUM FULL会物理删除dead tuples,把释放的空间交还给操作系统。本质上是新建了一个数据文件并把live tuples迁移过去,因此数据文件占用的磁盘空间会缩小到实际的数据量。
使用VACUUM或VACUUM FULL命令,进行磁盘空间回收:
vacuum TABLE_NAME; --清理普通表
vacuum TABLE_NAME partition(P1); --清理表分区vacuum full TABLE_NAME; --彻底回收死元组占用的空间
使用ANALYZE语句更新统计信息:
analyze TABLE_NAME;
analyze verbose TABLE_NAME; --更新表统计信息并输出相关信息vacuum analyze TABLE_NAME; --清理死元组的同时更新统计信息
维护建议:
- 定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL;
- 定期对系统表做VACUUM FULL,主要是
PG_ATTRIBUTE
。 - 启用系统自动清理线程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。
索引重建
数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。
数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。
在重建索引前,用户可以通过临时增大maintenance_work_mem
和psort_work_mem
的取值来加快索引的重建。
重建索引有以下两种方式:
- (1)先运行
DROP INDEX
语句删除索引,再运行CREATE INDEX
语句创建索引。
在删除索引过程中,会在父表上增加一个短暂的排他锁,阻止相关读写操作。在创建索引过程中,会锁住写操作但是不会锁住读操作,此时读操作只能使用顺序扫描。
drop index IDX_T1_COL1;
create index IDX_T1_COL1 on T1(COL1);
- (2)使用REINDEX语句重建索引。
- 使用
REINDEX TABLE
语句重建索引,会在重建过程中增加排他锁,阻止相关读写操作。 - 使用
REINDEX INTERNAL TABLE
语句重建desc表(包括列存表的cudesc表)的索引,会在重建过程中增加排他锁,阻止相关读写操作。
- 使用
reindex table T1;
reindex internal table T1;
慢SQL诊断
查询SQL语句信息,需要合理设置GUC参数track_stmt_stat_level
。track_stmt_stat_level
参数控制语句执行跟踪的级别,第一部分控制全量SQL,第二部分控制慢SQL。对于慢SQL,当track_stmt_stat_level
的值为非OFF时,且SQL执行时间超过log_min_duration_statement
,会记录为慢SQL。默认值为"OFF,L0"
,建议设置为"L0,L0"
。
--查看某一时间段的SQL语句执行信息:
select * from DBE_PERF.get_global_full_sql_by_timestamp('2025-01-15 09:25:22', '2025-01-15 10:00:41');--查看某一时间段的慢SQL执行信息:
select * from DBE_PERF.get_global_slow_sql_by_timestamp('2025-01-15 09:25:22', '2025-01-15 10:00:41');--查看主节点SQL执行信息
select * from statement_history where start_time>('2025-01-15 09:25:22') and finish_time<('2025-01-15 10:00:41');--查看备节点SQL执行信息(只能在备节点执行)
select * from dbe_perf.standby_statement_history(true, '2025-01-15 09:25:22', '2025-01-15 10:00:41');
相关文章:
GaussDB日常维护操作
GaussDB日常维护操作 日常维护检查操作系统参数数据库健康状态日志收集日志清理应用连接数表的例行维护索引重建慢SQL诊断 日常维护检查 实例状态检查: #检查集群实例状态 gs_check -U omm -i CheckClusterStatecm_ctl query -Cvipd#检查主备DN的角色和同步状态 g…...

redis实现限流
令牌桶逻辑 计算逻辑: 代码: import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;/*** ClassName RedisRateLimiterTokenBucket* Description TODO* Author zhang zhengdong* DATE 2025/1/17 20:22* Version 1.0*/ public class…...

基于SpringBoot和PostGIS的各国及所属机场信息检索及可视化实现
目录 前言 一、空间数据简介 1、全球国家信息表 2、机场信息表 3、国家机场检索实现 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS可视化实现 1、Leaflet界面实现 2、国家及其机场可视化成果 3、全球机场数量排行榜 四、总结 前言 新春佳节即将…...

python http server运行Angular 单页面路由时重定向,解决404问题
问题 当Angular在本地ng server运行时候,可以顺利访问各级路由。 但是运行ng build后,在dist 路径下的打包好的额index.html 必须要在服务器下运行才能加载。 在服务器下我们第一次访问路由页面时是没有问题的,但是尝试刷新页面或手动输入路…...
GPT-4o背后的语音技术
GPT-4o背后的语音技术 GPT-4o是一个any2any的多模态模型,能够接受文本、音频、图像、视频等多模态输入,也能够生成包含文本、语音、图像和视频等混合内容的多模态输出。本文主要谈语音多模态的实现,并分享一些对于语音研究未来发展的看法。 GPT-4o (“o” 代表 “omni”) …...

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%
广泛应用的微透镜阵列 微透镜是一种常见的微光学元件,通过设计微透镜,可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制,进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列(Microlens Array&#x…...
Spring boot框架下的RocketMQ消息中间件
1. RocketMQ 基础概念 1.1 核心概念 以下是 RocketMQ 核心概念在 Spring Boot 的 Java 后端代码中的实际使用方式: Producer(生产者) 定义:Producer 是负责发送消息到 RocketMQ 的组件。它可以将消息发送到指定的 Topic。 实…...

记录一次 centos 启动失败
文章目录 现场1分析1现场2分析2搜索实际解决过程 现场1 一次断电,导致 之前能正常启动的centos 7.7 起不来了有部分log , 关键信息如下 [1.332724] XFS(sda3): Internal error xfs ... at line xxx of fs/xfs/xfs_trans.c [1.332724] XFS(sda3): Corruption of in-memory data…...

C++学习第五天
创作过程中难免有不足,若您发现本文内容有误,恳请不吝赐教。 提示:以下是本篇文章正文内容,下面案例可供参考 一、构造函数 问题1 关于编译器生成的默认成员函数,很多童鞋会有疑惑:不实现构造函数的情况下…...

openharmony标准系统方案之瑞芯微RK3568移植案例
标准系统方案之瑞芯微RK3568移植案例 本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准系统相关功能的移植,主要包括产品配置添加,内核启动、升级,音频ADM化,Camera,TP,LCD,…...
深入理解 SSH 端口转发:本地 vs 远程 vs 动态转发
🌟 简介 SSH 端口转发(SSH Port Forwarding)作为一种强大而灵活的技术,不仅可以帮助我们安全地访问远程服务,还能轻松突破网络限制。本文将带你深入了解 SSH 端口转发的原理、类型和实战应用。 🌈 目录 &a…...

postman请求参数化
postman界面介绍 一、使用环境变量(Environment Variables)进行参数化 1、在请求中使用环境变量 在请求的url、请求头(Headers)、请求体(Body)等部分都可以使用环境变量。 URL 部分示例 点击 Postman 界面右上角的 “眼睛” 图标(Environment Quick Look)打开环境管理…...
基于 WEB 开发的汽车养护系统设计与实现
标题:基于 WEB 开发的汽车养护系统设计与实现 内容:1.摘要 本文介绍了基于 WEB 开发的汽车养护系统的设计与实现。文章首先阐述了系统的背景和目的,即随着汽车保有量的增加,汽车养护需求日益增长,传统的汽车养护方式已经无法满足人们的需求&…...
Nginx正向代理配置
Nginx 正向代理默认只支持 http 协议,不支持 https 协议,需借助 "ngx_http_proxy_connect_module" 模块实现 https 正向代理,详情请参考: https://github.com/chobits/ngx_http_proxy_connect_module 安装Nginx某些模块…...

本地仓库管理之当前分支内的操作
以刚搭建好的git仓库为例,刚搭建完的仓库只有master分支,使用git branch查看当前的分支情况。 elfubuntu:~/work/example/hello$ git branch *所在分支为当前分支,即master分支 当前分支进行源码修改时简单流程图如下: 在当前分…...
《内网穿透:网络拓展与安全防护的平衡艺术》
一、引言:开启内网穿透的大门 在当今数字化浪潮席卷全球的时代,网络已成为人们生活和工作中不可或缺的一部分。我们日常使用的网络,如同一个庞大而复杂的生态系统,其中内网和外网犹如两个相互关联却又有所区别的世界。 想象一下…...
【python写个可以运行的2048小游戏】
写一个完整的2048小游戏在Python中是一个相对复杂的任务,因为它涉及到用户界面、事件处理、游戏逻辑等多个方面。为了简化这个过程,我们可以使用Python的图形库,比如pygame。下面是一个简单的2048游戏的实现。 首先,确保你已经安…...

【Flink系列】9. Flink容错机制
9. 容错机制 在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 9.1 检查点(Checkpoint) 9.1.1 检查点的保存 1)周期性的触发保存 “随时存档”确实恢复起来方便,可是需要我…...
DETR论文阅读
1. 动机 传统的目标检测任务需要大量的人工先验知识,例如预定义的先验anchor,NMS后处理策略等。这些人工先验知识引入了很多人为因素,且较难处理。如果能够端到端到直接生成目标检测结果,将会使问题变得很优雅。 2. 主要贡献 提…...

关于vite+vue3+ts项目中env.d.ts 文件详解
env.d.ts 文件是 Vite 项目中用于定义全局类型声明的 TypeScript 文件。它帮助开发者向 TypeScript提供全局的类型提示,特别是在使用一些特定于 Vite 的功能时(如 import.meta.env)。以下是详细讲解及代码示例 文章目录 **1. env.d.ts 文件的…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...