PgLens作者发现,在PgBouncer事务模式下,只读工具用SET SESSION设置只读会残留在共享连接上,导致下一个客户端无法写入。修复方法是改用启动参数传递只读与超时限制,并在连接后校验后端pid与只读状态。作者建议工具开发者不要在连接上执行SET,并应测试事务模式连接池。
PgBouncer 事务模式下,会话级 SET 会泄漏给下一个客户端,包括租户键、SET ROLE、search_path、statement_timeout,以及临时表、游标、LISTEN 和咨询锁,导致读到他人数据。修复方法:每次调用包在显式事务中,用 SET LOCAL 设置租户,提交后不留状态;避免 LISTEN 和 SQL 级 PREPARE。
文章主要讨论PostgreSQL连接池被“污染”的问题。当PgBouncer在事务模式下复用连接时,若客户端遗留了如`default_transaction_read_only`等会话状态,会导致后续查询失败(错误码25006)。解决方法包括执行`DISCARD ALL`重置连接,修复应用代码,并建议将读流量路由到副本以避免污染主库连接池。
PgBouncer 1.21版本新增了事务模式下的预处理语句功能,可同时拥有预处理语句和事务模式的优势,大大提高性能和连接池扩展。
本文介绍了分布式事务的演进历程和Seata社区的进展和规划。Seata是一款开源的分布式事务解决方案,支持多种事务模式和编程语言,具有高可用性、高性能和高扩展性。文章还介绍了TXC/GTS到Seata的演进历程和分布式事务解决的问题。阿里的开源经历和Seata的开源意义也被提及。
本文介绍Redis事务的两种模式:事务模式和Lua脚本模式,Lua脚本具备原子性和隔离性,Redis事务具备隔离性和原子性但不支持回滚,Lua脚本可以减少网络开销和实现原子操作,但要避免阻塞和测试脚本。
完成下面两步后,将自动完成登录并继续当前操作。