动手实践PostgreSQL中的ACID特性:第一部分
本实验适合那些对PostgreSQL了解不多但想实际看到事务、回滚、隔离性和持久性在现实中如何工作的人。
🧠 第0步:如果你从未使用过PostgreSQL…
在开始本实验之前,请确保你知道如何打开psql并创建一个简单的数据库。如果不会,请先从这里开始:PostgreSQL初学者指南
该指南向你展示:
- 如何使用psql连接,创建你的第一个数据库和表
- 常见的初学者错误(以及如何修复它们)
一旦你可以运行:
|
|
并看到postgres=#提示符——你就准备好开始这个ACID实验了!
你将学到什么
通过本实验,你将看到并理解ACID模型的所有4个部分:
| 属性 | 含义 | 你将看到它在实际操作中 |
|---|---|---|
| 原子性 | 全有或全无的事务 | 回滚演示 |
| 一致性 | 约束保持数据有效 | 检查约束演示 |
| 隔离性 | 事务互不干扰 | 两个会话测试 |
| 持久性 | 已提交的数据保持保存 | 重启后检查 |
⚙️ 实验设置
假设:
- PostgreSQL已安装且psql工作正常
- 我们将使用两个终端窗口:
- 会话A → 进行更改
- 会话B → 从另一个用户角度观察
- 用户:postgres
✅ 创建数据库和表
在Git Bash终端中运行一次:
|
|
现在进入数据库:
|
|
然后在psql中:
|
|
预期输出:
|
|
📸 标题:“初始数据——两个账户分别从1000开始”
🧩 1. 原子性——全有或全无规则
打开会话A并开始一个事务:
|
|
会话A内的输出:
|
|
现在打开会话B(新终端):
|
|
会话B中的输出(未改变):
|
|
📸 “未提交的更改对其他会话不可见。”
现在在会话A中回滚:
|
|
输出:
|
|
📸 “原子性——没有部分更改。”
如果不回滚而是写COMMIT,更改可以在两个终端中看到。
📸 “原子性——完全更改。”
下一部分我们将看到…
🌐 连接与分享
如果这个实验对你有帮助,请留言或分享你的截图—— 让我们连接并一起构建 💬
🐙 GitHub – @sajjadrahman56 💼 LinkedIn – 与我连接 🐦 X (Twitter) – @sajjadrahman56 📺 YouTube – 数据工程师的教程和技巧