当前位置: 首页 > news >正文

【数据库】PostgreSQL(持续更新)

目录

    • K8S 部署
    • 基本使用
    • 高级特性

K8S 部署

# pg.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:name: tv-postgres-pvnamespace: locallabels:storage: tv-postgres-pv
spec:accessModes:- ReadWriteOncecapacity:storage: 50Gi  # 按需修改,需要保持与下方一致persistentVolumeReclaimPolicy: RetainhostPath:path: /mnt/local/tv-postgres-pvtype: DirectoryOrCreate---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: tv-postgres-pvcnamespace: local
spec:accessModes:- ReadWriteOnceresources:requests:storage: 50GistorageClassName: ""volumeMode: FilesystemvolumeName: tv-postgres-pv---
apiVersion: v1
kind: ConfigMap
metadata:name: tv-postgres-configmapnamespace: local
data:init.sql: | CREATE EXTENSION IF NOT EXISTS ltree WITH SCHEMA public;CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public;---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: tv-postgresnamespace: local
spec:serviceName: "tv-postgres-service"replicas: 1selector:matchLabels:app: tv-postgrestemplate:metadata:labels:app: tv-postgresspec:containers:- name: tv-postgresimage:   # 你可以选择你需要的 PostgreSQL 版本imagePullPolicy: IfNotPresentports:- containerPort: 5432name: tv-postgresenv:- name: POSTGRES_USERvalue: postgres- name: POSTGRES_PASSWORDvalue: mypassword- name: PGDATAvalue: /var/lib/tv-postgresql/data/pgdatavolumeMounts:- name: tv-postgres-datamountPath: /var/lib/tv-postgresql/data- name: init-scriptsmountPath: /docker-entrypoint-initdb.dreadinessProbe:exec:command:- pg_isready- -U- tv-postgresinitialDelaySeconds: 5periodSeconds: 5livenessProbe:exec:command:- pg_isready- -U- tv-postgresinitialDelaySeconds: 60periodSeconds: 10volumes:- name: init-scriptsconfigMap:name: tv-postgres-configmap- name: tv-postgres-datapersistentVolumeClaim:claimName: tv-postgres-pvc---
apiVersion: v1
kind: Service
metadata:name: tv-postgres-servicenamespace: local
spec:ports:- port: 5432targetPort: 5432name: tv-postgresclusterIP: None  # Headless serviceselector:app: tv-postgres---
apiVersion: v1
kind: Service
metadata:name: tv-postgres-service-externalnamespace: local
spec:ports:- port: 5432targetPort: 5432protocol: TCPnodePort: 30042selector:app: tv-postgrestype: NodePort  

基本使用


-- 系统
SELECT version();
-- 查看当前活动的会话,包括每个连接的状态、正在执行的查询等信息。
-- 这对于诊断性能问题和锁定问题非常有用。
select * from pg_stat_activity;-- 提供每个数据库的统计信息,如磁盘读取次数、块命中次数、事务数量等。
-- 该表可以帮助管理员了解各个数据库的工作负载情况。
select * from pg_stat_database;-- 显示用户定义的表(非系统表)的统计信息,例如扫描次数、插入/更新/删除操作的数量。
-- 此信息对于评估表的使用频率和性能调优很有帮助。
select * from pg_stat_user_tables;-- 类似于 pg_stat_user_tables,但是它提供了更详细的存储统计信息,
-- 包括表的数据文件读写次数,有助于了解I/O模式。
select * from pg_statio_user_tables;-- 显示用户定义的索引的统计信息,比如索引扫描次数、索引块读取次数等。
-- 这对于分析索引的有效性和利用率非常重要。
select * from pg_stat_user_indexes;-- 类似于 pg_stat_user_indexes,但它提供了关于索引存储的详细统计信息,
-- 包括索引数据文件的读写次数,这有助于评估索引的I/O效率。
select * from pg_statio_user_indexes;-- 数据库
DROP DATABASE IF EXISTS "mydb";
CREATE USER "admin" WITH PASSWORD 'admin';
CREATE DATABASE "mydb" OWNER "mydb_admin";
CREATE EXTENSION IF NOT EXISTS ltree WITH SCHEMA public;-- 表操作
CREATE TABLE weather (city            varchar(80),temp_lo         int,           -- 最低温度temp_hi         int,           -- 最高温度prcp            real,          -- 湿度date            date
);
DROP TABLE tablename;-- 增
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
INSERT INTO weather (date, city, temp_hi, temp_lo)VALUES ('1994-11-29', 'Hayward', 54, 37);
-- 查
SELECT * FROM weather;
SELECT * FROM weather JOIN cities ON city = name;
SELECT max(temp_lo) FROM weather;
-- 改
UPDATE weatherSET temp_hi = temp_hi - 2,  temp_lo = temp_lo - 2WHERE date > '1994-11-28';
-- 删
DELETE FROM weather WHERE city = 'Hayward';

高级特性


-- 视图
CREATE VIEW myview ASSELECT name, temp_lo, temp_hi, prcp, date, locationFROM weather, citiesWHERE city = name;SELECT * FROM myview;-- 外键
CREATE TABLE cities (name     varchar(80) primary key,location point
);CREATE TABLE weather (city      varchar(80) references cities(name),temp_lo   int,temp_hi   int,prcp      real,date      date
);-- 事务
BEGIN;
UPDATE accounts SET balance = balance - 100.00WHERE name = 'Alice';
-- etc etc
COMMIT;-- 窗口函数
SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;-- 继承
CREATE TABLE cities (name       text,population real,elevation  int     -- (in ft)
);CREATE TABLE capitals (state      char(2) UNIQUE NOT NULL
) INHERITS (cities);

内置工具:

pg_stat_activity:查看当前活动的会话。
pg_stat_database:提供每个数据库的统计信息。
pg_stat_user_tables 和 pg_statio_user_tables:用于表级别的统计信息。
pg_stat_user_indexes 和 pg_statio_user_indexes:用于索引级别的统计信息。
pg_locks:查看锁定状态。

扩展模块:
pg_stat_statements:这是一个非常有用的扩展,可以记录所有SQL语句的执行统计,包括调用次数、总时间等。
auto_explain:可以用来自动解释(分析)慢查询。
pgBadger:虽然不是一个官方扩展,但它是一个流行的日志分析工具,可以从PostgreSQL日志中生成详细的报告。
外部监控工具:
Prometheus + Grafana:结合使用Prometheus进行数据采集,Grafana用于可视化展示,是目前比较流行的一种组合。
pgMonitor:基于Prometheus和Grafana构建,专门为PostgreSQL设计的监控解决方案。
PgHero:一个开源的应用程序,它提供了对PostgreSQL数据库的洞察力,包括查询性能、索引使用情况、锁等待等。
Datadog, New Relic, AWS CloudWatch 等云服务提供商提供的监控工具也支持PostgreSQL。
日志文件:
配置适当的日志级别和参数来记录错误、警告和其他重要事件。通过分析日志文件,可以获得关于系统行为的重要线索。
自定义脚本:
根据特定需求编写shell脚本或使用编程语言(如Python)编写的脚本来定期检查某些指标或者执行诊断命令。
报警机制:
设置阈值并配置报警机制,当关键性能指标超出正常范围时通知管理员。这可以通过上述提到的工具实现,也可以通过独立的报警服务完成。

相关文章:

【数据库】PostgreSQL(持续更新)

目录 K8S 部署基本使用高级特性 K8S 部署 # pg.yaml --- apiVersion: v1 kind: PersistentVolume metadata:name: tv-postgres-pvnamespace: locallabels:storage: tv-postgres-pv spec:accessModes:- ReadWriteOncecapacity:storage: 50Gi # 按需修改,需要保持与…...

overleaf中出现TeX capacity exceeded PDF object stream buffer=5000000的原因和解决方案

在插入pdf 配图后,编译出错提示信息如图,很可能的一个原因是pdf文件大小太大了,最好压缩一下,压缩到1MB以内。...

pyqt5冻结+分页表

逻辑代码 # -*- coding: utf-8 -*- import sys,time,copy from PyQt5.QtWidgets import QWidget,QApplication, QDesktopWidget,QTableWidgetItem from QhTableWidgetQGN import Ui_QhTableWidgetQGN from PyQt5.QtCore import Qt from PyQt5 import QtCore, QtGui, QtWidgets…...

一起学Git【第四节:添加和提交文件】

通过前三节的学习,基本上对Git有了初步的了解,下面开始进行文件的添加和提交的流程。 这里主要涉及四个命令: git init 创建仓库git status查看仓库状态git add添加至暂存区git commit提交文件之前已经使用过git init命令了,此处不再具体讲解。参照一起学Git【第二节:创建…...

【鸿蒙实战开发】HarmonyOS集成高德地图定位实现

背景 随着HarmoneyOS 应用的井喷式增长,各大厂商也都加快了自己原生应用鸿蒙化的脚步,今天使用高德打车的时候忽然间想到高德在鸿蒙上有没有实现呢?打开next bate 版本的手机发现高德已经上架了,但是功能还不是特别完善。那么几乎每个应用都…...

ECharts散点图-气泡图,附视频讲解与代码下载

引言: ECharts散点图是一种常见的数据可视化图表类型,它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图,包括图表效果预览、视频讲解及代码下载,让你轻松掌握…...

python操作Elasticsearch执行增删改查

文章目录 基本操作更多查询方法1. 查询全部数据2. 针对某个确定的值/字符串的查询:term、match3. 在多个选项中有一个匹配,就查出来:terms4. 数值范围查询:range5. 多个条件同时触发 bool6. 指定返回值个数 size7. 返回指定列 _so…...

学习C++:关键字

关键字: 作用:关键字是C预先保留的单词(标识符) 在定义变量或者常量时候,不要用关键字 不要用关键字给变量或者常量起名称...

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…...

为什么推荐使用构造函数注入而非@Autowired注解进行字段注入

在 Spring 框架中,推荐使用构造函数注入而非Autowired注解进行字段注入,主要有以下几个原因: 1. 依赖不可变和空指针安全 构造函数注入:使用构造函数注入时,依赖在对象创建时就必须提供,一旦对象创建完成&…...

如何卸载和升级 Angular-CLI ?

Angular-CLI 是开发人员使用 Angular 的必备工具。然而,随着频繁的更新和新版本的出现,了解如何有效地卸载和升级 Angular-CLI 对开发人员来说至关重要。本指南提供了一个全面的、循序渐进的方法来帮助您顺利过渡到最新版本。 必备条件 确保您的系统上…...

在线excel编辑(luckysheet)

项目地址:Luckysheet: 🚀Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 可以下载项目使用npm安装运行,也可以用cdn 加载excel文件(使用luckyexcel): …...

【ES6复习笔记】Symbol 类型及其应用(9)

一、Symbol 简介 Symbol 是 JavaScript 中的一种基本数据类型,它表示唯一的标识符。Symbol 的主要目的是防止属性名冲突,尤其是在多个代码库或模块中共享对象时。Symbol 值可以用作对象的属性名,这样可以确保属性名是唯一的,不会…...

[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…...

【ES6复习笔记】Class类(15)

介绍 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,…...

【Golang 面试题】每日 3 题(六)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

openEuler安装OpenGauss5.0

OpenGauss5.0 Linux服务器 极简版 服务器安装 单节点安装 极简版安装 安装准备 获取安装包 下载地址:https://opengauss.org/zh/download/archive/版本选择:5.0.0 (LTS)系统架构:uname -m操作系统:cat /etc/os-release完整性校…...

20241230 机器学习ML -(1)线性回归(scikitlearn)

机器学习ML入门。 线性回归 ScikitLearnLRRidgeLassoElasticNetL2:解决共线性问题 (Colinearity Problem) L1:特征选择(AI的解释) W=XtX XtY (Xw=Y >> XtXw= XtY) 当 COND(Xtx) ~ infinit, 导致inv(XtX)无解 举例: 12 23 46 XtX=[14,28] [28,56] eigVal=det…...

MacOS下TestHubo安装配置指南

TestHubo是一款开源免费的测试管理工具, 下面介绍MacOS私有部署的安装与配置。TestHubo 私有部署版本更适合有严格数据安全要求的企业,支持在本地或专属服务器上运行,以实现对数据和系统的完全控制。 1、Mac 服务端安装 Mac安装包下载地址&a…...

mysql性能问题排查

生产环境 Mysql执行性能分析 问题排查思路通过 performance_schema 分析performance_schema 说明查询 performance_schema 所有表信息performance_schema 相关表 主要相关介绍events_statements_history 分析慢查询 和查询当时状态字段说明 问题排查思路 查询慢SQL日志查询SQL…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...