当前位置: 首页 > 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…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...