PostgreSQL 事务隔离
1 简介 在没有事务隔离机制的情况下,并发事务间相互作用会产生一些异常现象: 脏读(Dirty Read):一个事务读取了另一个未提交并发事务写入的数据。 不可重复读(Nonrepeatable Read):一个事务重读之前已读过的数据,发现该数据已被其他并发事务修改(该事务已在初次读取之后提交)。 幻读(Phantom Read):一个事务重新执行了一个之前执行过的查询,...
1 简介 在没有事务隔离机制的情况下,并发事务间相互作用会产生一些异常现象: 脏读(Dirty Read):一个事务读取了另一个未提交并发事务写入的数据。 不可重复读(Nonrepeatable Read):一个事务重读之前已读过的数据,发现该数据已被其他并发事务修改(该事务已在初次读取之后提交)。 幻读(Phantom Read):一个事务重新执行了一个之前执行过的查询,...
1 简介 流复制是指通过 主节点(Primary) 持续发送 WAL 记录,备节点(Standby) 持续接收 WAL 记录并 回放(replay) 的方式来达到实时备份主节点的一种机制。 流复制中最主要的几个进程及其作用如下: postgres: 主节点上的后端进程,负责处理客户端连接,一个后端进程对应一个客户端。 walsender: 主节点上负责发送 WAL 记录的进程。...
1 语法概要 先说明记号:[ ] 表示可选,{ } 表示必须从中选一项,| 表示或者,... 表示可重复。 [ WITH with_query [, ...] ] MERGE INTO [ ONLY ] target_table_name [ * ] [ [ AS ] target_alias ] USING data_source ON join_condition when_clau...
1 进程架构 1.1 进程分类 PostgreSQL 是多进程架构,其进程分为以下 4 类: 主进程(Postgres server process):负责生出其他进程。 后端进程(Backend processes):每当一个客户端连接建立,就会生出一个后端进程,负责处理该连接的所有查询。 后台进程(Background processes):负责处理一些特定任务的进程,...
1 逻辑结构 PostgreSQL 中 Cluster 的概念指的不是多个 PostgreSQL 实例所组成的集群,而是单个 PostgreSQL 实例中的多个数据库(Databases),所以翻译为集簇。每个集簇下可以存在多个相互独立的数据库(Database),一个数据库是多个数据库对象(Database object)的集合,这些对象包括表(Table)、视图(View)、索引(In...
1 Nix 是什么 Nix 是一个纯函数式的包管理器。 纯函数式的意思是输入决定输出:比如一个求平方的函数 f,当输入为 1 时输出为 1,当输入为 2 时输出为 4。只要输入不变,输出就不变,输入改变,输出一般也会改变。虽然从理论上来说纯函数式也有可能存在不同的输入得到相同的输出的情况,但是像 Nix 这种输入内容非常多而且使用哈希算法的情况下概率非常小,这个在密码学上叫做哈希碰撞,我...
本文介绍 Claude Code 的 Claude.md、Skills、MCP、Subagents、Agent teams、Hooks、Plugins 等高级特性。 特性简介 CLAUDE.md: 用来向 Claude Code 介绍项目(如项目背景、架构、技术栈等)和指定规范(如构建测试命令、注意事项、禁止事项等)的文件。 Skills: 可复用的参...
Claude Code 是一个 AI 辅助编程工具,支持终端、IDE(VSCode, JetBrains)、桌面应用、浏览器等方式运行。 文中出现 claude --resume 这样的格式表示 Shell 中执行 claude 命令,出现 /resume 这样的格式表示启动 claude 后执行的内置命令(Built-in commands)。 1 工作流程 Claude C...
1 简介 PostgreSQL 以页(page,默认 8KB)为单位对数据文件进行访问,为了提高访问的效率,会先把需要访问的页从磁盘加载到共享缓冲区(shared_buffers,内存)再进行操作,然后由后台写入进程(bgwriter)定期把缓冲区中的脏页(被修改过的)写入磁盘。由此带来一个问题,就是当发生数据库故障、操作系统故障、电源故障等情况时,缓冲区中还未来得及写入磁盘的数据会丢失。...
概述 GCC 编译 C/C++ 代码的过程主要分为如下图的 4 个步骤(.i 和 .ii 分别是 .c 和 .cpp 源文件预处理后的中间文件后缀名;.o 和 .obj 分别是 Linux 和 Windows 系统上汇编后的目标文件后缀名;.a 和 .lib 分别是 Linux 和 Windows 系统上静态库文件后缀名;.exe 是 Windows 上可执行文件后缀名,Linux 上可执...