) values (2,'张三');
INSERT 0 1
postgres=#
此时,还没有提交,我们可以开启另外一个会话查看t1表,发现表中还是空的:
postgres=# select * from...下面的语句,就是在插入第一条数据之后保存了一个检查点,然后继续insert,最后回滚到保存的检查点再进行提交,最终的效果是只有第一条数据插入有效:
postgres=# begin;
BEGIN
postgres...加锁对象的大小称为 锁粒度(granularity)。
加锁的对象可以是 逻辑单元: 属性值, 属性值的集合, 关系, 索引项, 甚至整个数据库。...也可以是物理单元: 页(数据页或索引页), 物理记录等。
基于多版本的并发控制(MVCC)
MVCC通过把数据项的旧值保存在系统中, 来保证并发事务的正确性。...PostgreSQL 内部数据结构中, 每个元组(行记录) 有 4 个与事务可见性相关的 隐藏列:
xmin, 创建该行数据的 xid;
xmax, 删除改行的xid;
cmin, 插入该元组的命令在事务中的命令序列号