开发相关规范 update toids set city '测试' where city ! '测试'; UPDATE 0 teledb select xmin, from toids; xmin id name birth city ++++ 1182 1 张三 20001201 00:00:00 测试 1182 2 李四 19970324 00:00:00 测试 1148 3 王五 20040901 00:00:00 测试 1148 4 陈六 20220101 00:00:00 测试 上面的效果是一样的,但带条件的更新不会产生一个新的版本记录,不需要系统执行vacuum 回收垃圾数据。 4. 建议将单个事务的多条SQL操作,分解、拆分,或者不放在一个事务里,让每个事务的粒度尽可能小,尽量lock少的资源,避免lock 、dead lock的产生。 会话1 把所有数据都更新但不提交,锁住了所有数据 plaintext teledb begin; BEGIN teledb update toids set city 'city'; UPDATE 4 会话2 等待 plaintext teledb update toids set city 'session2'; 会话3 等待 plaintext teledb update toids set city 'session3'; 如果会话1分批更新的话,则会话2和会话3中就能部分提前完成,这样可以避免大量的锁等待和出现大量的session占用系统资源,在做全表更新时请使用这种方法来执行。 5. 建议大批量的数据入库时,使用copy,不建议使用insert,以提高写入速度。 6. 建议对报表类的或生成基础数据的查询,使用物化视图(MATERIALIZED VIEW)定期固化数据快照,避免对多表(尤其是读写频繁的表)重复跑相同的查询,且物化视图支持REFRESH MATERIALIZED VIEW CONCURRENTLY,支持并发更新。 plaintext teledb