本文实测了Go语言pgx连接池为PostgreSQL行级安全设置租户的九种方式。用pool.Exec设租户再pool.QueryRow查询会因连接不同而泄漏,约半数请求读到他人数据;连接池钩子直连有效,但在PgBouncer事务模式下失效;最可靠且最快的是每请求事务或批处理,首条语句用set_config设租户,每次耗时0.06毫秒。
完成下面两步后,将自动完成登录并继续当前操作。