其他
如何合理规划 PostgreSQL 的数据库用户
场景说明
PG 实例就一个数据库
数据库就一个默认的 public schema
所有的表都在这个 public schema 下
人到数据库
DBA 操作
数据库变更,DDL 和 DML 都有
数据库查询 应用到数据库
数据库变更,DDL 的话通常在应用启动前做,除此之外都是 DML
数据库查询
具体配置
额外注意
公有云数据库服务是不提供 superuser 的,他们只提供一个阉割版的 superuser,比如 Google Cloud SQL 里的 cloudsqlsuperuser
设置单独 migration 用户的原因一方面是为了方便监控,另一方面也使得我们可以给 migration 用户设置单独的默认连接参数,最常见设置的是 lock_timeout。要设置的原因是,做 DDL 时要加锁,加锁需要等待,而因为 PG 的队列机制,即使后面来的另外一条事务不需要 DDL 锁,一样会被 block 住。所以 migration 用户往往要设置一个 lock_timeout,避免长时间 block 后面的其他事务。 在 Postgres 里创建对象时,比如建表,建出来表的 owner 就是建表语句的执行者。所以当使用一个单独的 migration 用户来做 schema 变更时,表的 owner 也会是 migration。如果希望 owner 能反应具体的业务,比如说 payment 的话,那么可以再单独创建一个 payment 的角色,在 migration 执行的时候,使用 SET LOCAL ROLE 切换到 payment 再执行。
这家软件届的爱马仕,遭遇了成立 5 年来的最大故障,元凶还是它
Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制
5 分钟上手 Bytebase,完成第一次 Schema 变更