From c0ae2f0edb9524ea34df8fd1baae12509de76712 Mon Sep 17 00:00:00 2001 From: FNS Service Date: Tue, 21 Apr 2026 20:40:56 +0800 Subject: [PATCH] Update from Sync Service --- 数据库/CAP定理(CAP theorem).md | 86 ++++++++++++++++++--- 数据库/INDEX_数据库.md | 115 ++++++++++++++++++---------- 数据库/PostgreSQL/PostgreSQL安装.md | 101 ++++++++++++++++++++---- 数据库/关系型数据库遵循ACID规则.md | 94 +++++++++++++++++++---- 4 files changed, 314 insertions(+), 82 deletions(-) diff --git a/数据库/CAP定理(CAP theorem).md b/数据库/CAP定理(CAP theorem).md index 280b28b..3444c0f 100755 --- a/数据库/CAP定理(CAP theorem).md +++ b/数据库/CAP定理(CAP theorem).md @@ -1,15 +1,77 @@ -==在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:== +# CAP 定理 -- **一致性(Consistency)** ==(所有节点在同一时间具有相同的数据)== -- **可用性(Availability)** ==(保证每个请求不管成功或者失败都有响应)== -- **分隔容忍(Partition tolerance)** ==(系统中任意信息的丢失或失败不会影响系统的继续运作)== +> Brewer's Theorem — 分布式计算系统的基本原则 -==CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。== -==因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:== +--- -- ==CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。== -- ==CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。== -- ==AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。== -![captheoramimage](Exported%20image%2020260407225428-0.png) - > 来自 <[http://www.runoob.com/mongodb/nosql.html](http://www.runoob.com/mongodb/nosql.html)> - > 来自 <[http://www.runoob.com/mongodb/nosql.html](http://www.runoob.com/mongodb/nosql.html)> \ No newline at end of file +## 定理内容 + +一个分布式系统**不可能同时满足**以下三点: + +| 特性 | 说明 | +|------|------| +| **一致性 (Consistency)** | 所有节点在同一时间具有相同的数据 | +| **可用性 (Availability)** | 保证每个请求都有响应(成功或失败) | +| **分区容忍 (Partition Tolerance)** | 系统中任意信息丢失或失败不影响系统继续运行 | + +--- + +## CAP 三角 + +``` + C + /\ + / \ + / \ + / P \ + /________\ + A +``` + +**核心**:分布式系统最多只能同时满足 **两个** 特性。 + +--- + +## 三类系统 + +### CA — 一致性 + 可用性 + +- 单点集群 +- 不具备分区容错能力 +- 例子:传统 RDBMS(MySQL、PostgreSQL) + +### CP — 一致性 + 分区容忍 + +- 牺牲可用性 +- 网络分区时可能不可用 +- 例子:MongoDB、HBase、Redis + +### AP — 可用性 + 分区容忍 + +- 牺牲一致性 +- 分区期间保持可用,数据可能不一致 +- 例子:Cassandra、DynamoDB + +--- + +## 选择指南 + +| 场景 | 选择 | +|------|------| +| 金融交易、银行系统 | CP(强一致性) | +| 社交媒体、新闻 Feed | AP(高可用) | +| 需要强一致的传统业务 | MySQL/PostgreSQL | + +--- + +## NoSQL 数据库分类 + +| 类型 | 数据库 | +|------|--------| +| **CA** | 传统关系型数据库 | +| **CP** | MongoDB、HBase、Redis | +| **AP** | Cassandra、DynamoDB、CouchDB | + +--- + +> 参考:[NoSQL 简介 - 菜鸟教程](http://www.runoob.com/mongodb/nosql.html) diff --git a/数据库/INDEX_数据库.md b/数据库/INDEX_数据库.md index dca2184..77a7767 100755 --- a/数据库/INDEX_数据库.md +++ b/数据库/INDEX_数据库.md @@ -1,54 +1,85 @@ --- title: 数据库 索引 tags: + - 数据库 + - PostgreSQL + - SQLServer + - MariaDB - 索引 created: 2026-04-21 +updated: 2026-04-21 --- -# 数据库 +# 数据库知识索引 -> 自动生成的索引文件 +> 数据库技术学习笔记汇总 -## 文件列表 +## 📚 目录 -| 文件名 | 大小 | 说明 | -|--------|------|------| -| [[数据库/CAP定理(CAP theorem)]] | 1KB | | -| [[数据库/Cpu 占用过高]] | 420B | | -| [[数据库/HiMonitor1.0 升级到1.3脚本注意事项]] | 4KB | | -| [[数据库/MariaDB_Centos7安装mariadb,支持远程访问]] | 1KB | | -| [[数据库/PostgreSQL_Pg12 安装过程]] | 1KB | | -| [[数据库/PostgreSQL_Postgresql 帐号密码修改方法]] | 267B | | -| [[数据库/PostgreSQL_pg_hba.conf]] | 1KB | | -| [[数据库/PostgreSQL_postgresql删除还有活动连接的数据库]] | 246B | | -| [[数据库/PostgreSQL_systemctl start postgresql-12.service -- 启动服务]] | 223B | | -| [[数据库/SQL SERVER 游标使用]] | 2KB | | -| [[数据库/SQLSERVER 数据库恢复挂起的解决办法]] | 362B | | -| [[数据库/SQLSERVER存储过程基本语法]] | 6KB | | -| [[数据库/三峡数据变形值直接导出]] | 552B | | -| [[数据库/关系型数据库遵循ACID规则]] | 1KB | | -| [[数据库/内蒙古数据FTP推送脚本快速获取]] | 440B | | -| [[数据库/单个HiMonitor 站点数据]] | 873B | | -| [[数据库/去重]] | 229B | | -| [[数据库/合肥董铺水库中间数据]] | 2KB | | -| [[数据库/回补中间一段时间的GNSS数据]] | 1KB | | -| [[数据库/循环批量删除数据库表]] | 814B | | -| [[数据库/循环造固定数据值脚本]] | 744B | | -| [[数据库/循环遍历插数据]] | 591B | | -| [[数据库/批量创建app 表索引]] | 820B | | -| [[数据库/批量删除表]] | 458B | | -| [[数据库/批量删除超前数据脚本]] | 903B | | -| [[数据库/批量删除超前数据脚本(监测云)]] | 1KB | | -| [[数据库/批量增加非聚集索引]] | 1KB | | -| [[数据库/按日分组求均值]] | 221B | | -| [[数据库/新增站点基准信息增加]] | 547B | | -| [[数据库/无日志文件附加数据库失败解决]] | 1KB | | -| [[数据库/松滋 2号店循环造rtk]] | 1KB | | -| [[数据库/模拟一段数据]] | 1KB | | -| [[数据库/解除数据库占用连接]] | 491B | | -| [[数据库/运行中数据库收缩脚本]] | 743B | | -| [[数据库/链接服务器远程查询]] | 1B | | -| [[数据库/附加数据库]] | 105B | | +### 理论 +| 笔记 | 说明 | +|------|------| +| [[CAP定理]] | CAP 理论 | +| [[关系型数据库遵循ACID规则]] | ACID 特性 | + +### PostgreSQL +| 笔记 | 说明 | +|------|------| +| [[PostgreSQL安装]] | PostgreSQL 12 安装 | +| [[PostgreSQL密码修改]] | 账号密码修改 | +| [[PostgreSQL_hba配置]] | pg_hba.conf 配置 | +| [[PostgreSQL删除数据库]] | 删除有连接的数据库 | +| [[PostgreSQL启动服务]] | systemctl 启动服务 | + +### SQLServer +| 笔记 | 说明 | +|------|------| +| [[SQLServer游标使用]] | 游标基本用法 | +| [[SQLServer存储过程]] | 存储过程语法 | +| [[SQLServer数据库恢复挂起]] | 恢复挂起解决办法 | + +### MariaDB +| 笔记 | 说明 | +|------|------| +| [[MariaDB安装]] | CentOS7 安装并配置远程访问 | + +### 运维脚本 +| 笔记 | 说明 | +|------|------| +| [[循环批量删除数据库表]] | 批量删除表 | +| [[批量创建索引]] | 批量创建表索引 | +| [[批量删除表]] | 批量删除表 | +| [[解除数据库占用连接]] | 解除占用连接 | +| [[数据库收缩脚本]] | 运行中数据库收缩 | +| [[模拟一段数据]] | 测试数据模拟 | +| [[循环造固定数据值]] | 循环造数据 | +| [[循环遍历插数据]] | 循环插入数据 | + +### 常见问题 +| 笔记 | 说明 | +|------|------| +| [[Cpu占用过高]] | 数据库 CPU 占用排查 | +| [[附加数据库失败]] | 无日志文件附加失败 | +| [[新增站点基准信息]] | 站点基准信息增加 | --- -*共 36 个文件* + +## 常用 SQL + +```sql +-- PostgreSQL: 查看连接 +SELECT * FROM pg_stat_activity; + +-- PostgreSQL: 杀死连接 +SELECT pg_terminate_backend(pid); + +-- SQLServer: 查看进程 +EXEC sp_who2; + +-- SQLServer: 杀进程 +KILL spid; +``` + +--- + +*共 31 篇笔记* diff --git a/数据库/PostgreSQL/PostgreSQL安装.md b/数据库/PostgreSQL/PostgreSQL安装.md index 87161bb..6bf6ee7 100755 --- a/数据库/PostgreSQL/PostgreSQL安装.md +++ b/数据库/PostgreSQL/PostgreSQL安装.md @@ -1,18 +1,91 @@ -1. ==Install the repository RPM:========yum install== ==https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm== -2. ==Install the client packages:========yum install postgresql12== -3. ==Optionally install the server packages:========yum install postgresql12-server== -4. ==Optionally initialize the database and enable automatic start:========/usr/pgsql-12/bin/postgresql-12-setup initdb========systemctl enable postgresql-12========systemctl start postgresql-12== > 来自 <[https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)> -[Service] -Type=notify +# PostgreSQL 安装 -User=postgres -Group=postgres +> CentOS 7 安装 PostgreSQL 12 -# Note: avoid inserting whitespace in these Environment= lines, or you may -# break postgresql-setup. +--- -# Location of database directory -Environment=PGDATA=/var/lib/pgsql/12/data/ +## 安装步骤 -初始化之后,数据文件会存在 /var/lib/pgsql/12/data - > 来自 <[https://www.postgresql.org/download/linux/redhat/](https://www.postgresql.org/download/linux/redhat/)> \ No newline at end of file +### 1. 安装 RPM 源 + +```bash +yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm +``` + +### 2. 安装客户端 + +```bash +yum install postgresql12 +``` + +### 3. 安装服务端 + +```bash +yum install postgresql12-server +``` + +### 4. 初始化数据库 + +```bash +/usr/pgsql-12/bin/postgresql-12-setup initdb +``` + +### 5. 启动服务 + +```bash +systemctl enable postgresql-12 +systemctl start postgresql-12 +``` + +--- + +## 配置 + +### 数据目录 + +默认数据目录:`/var/lib/pgsql/12/data/` + +### 连接配置 + +```bash +sudo -u postgres psql +``` + +```sql +-- 修改 postgres 用户密码 +ALTER USER postgres WITH PASSWORD '你的密码'; + +-- 允许远程连接 +-- 编辑 pg_hba.conf +host all all 0.0.0.0/0 md5 + +-- 编辑 postgresql.conf +listen_addresses = '*' +``` + +--- + +## 常用命令 + +```bash +# 启动/停止/重启 +systemctl start postgresql-12 +systemctl stop postgresql-12 +systemctl restart postgresql-12 + +# 连接数据库 +psql -U postgres -h localhost + +# 创建数据库 +createdb mydb + +# 备份 +pg_dump -U postgres mydb > backup.sql + +# 恢复 +psql -U postgres mydb < backup.sql +``` + +--- + +> 参考:[PostgreSQL 官方安装指南](https://www.postgresql.org/download/linux/redhat/) diff --git a/数据库/关系型数据库遵循ACID规则.md b/数据库/关系型数据库遵循ACID规则.md index 1f48d43..47ce548 100755 --- a/数据库/关系型数据库遵循ACID规则.md +++ b/数据库/关系型数据库遵循ACID规则.md @@ -1,14 +1,80 @@ -**关系型数据库遵循ACID规则** -==事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:== -**1、A (Atomicity) 原子性** -==原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。== -==比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。== -**2、C (Consistency) 一致性** -==一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。== -==例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。== -**3、I (Isolation) 独立性** -==所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。== -==比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。== -**4、D (Durability) 持久性** -==持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。== - > 来自 <[http://www.runoob.com/mongodb/nosql.html](http://www.runoob.com/mongodb/nosql.html)> \ No newline at end of file +# ACID 规则 + +> 关系型数据库事务的四个基本特性 + +--- + +## ACID 特性 + +事务(Transaction)在英文中与"交易"类似,具有以下四个特性: + +--- + +### A — Atomicity(原子性) + +事务的所有操作**要么全部完成**,要么**全部不执行**。 + +**示例**:银行转账 +``` +A账户转100元到B账户: +1. 从A账户减100元 +2. 向B账户加100元 + +两步必须同时成功,否则全部回滚 +``` + +--- + +### C — Consistency(一致性) + +事务执行前后,数据库始终处于**一致的状态**。 + +**示例**: +- 完整性约束:`a + b = 10` +- 事务改变了 `a`,必须相应改变 `b` +- 事务结束后仍满足 `a + b = 10` + +--- + +### I — Isolation(隔离性) + +并发事务之间**互不影响**。 + +**示例**: +- 转账事务进行中 +- 另一事务查询 B 账户余额 +- **看不到**新增的 100 元(直到事务提交) + +--- + +### D — Durability(持久性) + +事务提交后,修改**永久保存**在数据库中。 + +- 即使系统宕机 +- 也不会丢失已提交的数据 + +--- + +## ACID vs BASE + +| 特性 | ACID(关系型) | BASE(NoSQL) | +|------|----------------|---------------| +| **一致性** | 强一致性 | 弱一致性 | +| **可用性** | 可能牺牲 | 优先保证 | +| **分隔容忍** | 不保证 | 保证 | + +--- + +## 总结 + +``` +原子性:要么全做,要么全不做 +一致性:事务前后数据一致 +隔离性:并发事务互不干扰 +持久性:提交后永久保存 +``` + +--- + +> 参考:[NoSQL 简介 - 菜鸟教程](http://www.runoob.com/mongodb/nosql.html)