理解事务和锁定
理解事务和锁定
Loong Tu
这个作者很懒,什么都没留下…
展开
-
1.6 优化存储以及控制清理
文章目录配置VACUUM和autovacuum观察工作中的VACUUM利用snapshot too old对于一个查询,不是每一个人都会得到相同的返回数据。除此之外,DELETE和UPDATE不能直接覆盖数据,因为那样ROLLBACK将无法工作。如果用户恰好处于一次大型DELETE操作的中间,他将不能确定是否能够COMMIT。还有,当用户执行DELETE时,涉及的数据仍然是可见的,甚至有时在修改...原创 2020-03-22 22:33:52 · 187 阅读 · 0 评论 -
1.5 观察死锁
如果两个事务不得不相互等待,就将会发生一次死锁。首先创建一个测试表:CREATE TABLE t_deadlock ( id int);INSERT INTO t_deadlockVALUES (1), (2);事务1事务 2BEGIN;BEGIN;SELECT * FROM t_deadlock WHERE id = 1 FO...原创 2020-03-20 15:12:56 · 381 阅读 · 0 评论 -
1.4 理解事务隔离级别
默认情况下,PostgreSQL运行在READ COMMITTED事务隔离模式中。下面有关于事务隔离的一个例子:SELECT *FROM t_account ; id | currency_id | balance----+-------------+--------- 1 | 1 | 100 2 | 1 | ...原创 2020-03-19 17:16:58 · 110 阅读 · 0 评论 -
1.3 使用FOR UPDATE
文章目录SELECT FOR UPDATESELECT FOR UPDATE NOWAITSELECT FOR UPDATE SKIP LOCKEDSELECT FOR UPDATE有时应用会从数据库选择一些数据,然后对它们做一些处理并且最终将一些被更改的数据存回到数据库。这里的问题是两个人可能选择相同的未处理数据,那么对于那些已处理行的更改将被覆盖。为了解决这一问题,可以使用SELECT ...原创 2020-03-18 23:24:58 · 507 阅读 · 0 评论 -
1.2 理解基本的锁定
文章目录同时读写同时写避免典型错误和显式锁定锁机制表级锁类型CREATE TABLE test ( id int);CREATE TABLEINSERT INTO test ( id)VALUES ( 1 );INSERT 0 1同时读写事务1事务 2BEGIN;BEGIN;UPDATE test ...原创 2020-03-02 21:02:46 · 297 阅读 · 0 评论 -
1.1 使用PostgreSQL事务
文章目录使用postgresql事务在事务内部处理错误使用保存点事务性DDL理解基本的锁定使用postgresql事务在pg中,每一个操作都是一个事务。SELECT now(), now(); now | now-------------------------------+----------...原创 2020-02-29 16:21:05 · 236 阅读 · 0 评论