半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io
分类: Mysql/postgreSQL
2016-11-16 00:15:24
健康检查
通过创建到后端的连接实施健康检查
main() PgpoolMain() processState = PERFORMING_HEALTH_CHECK; do_health_check() make_persistent_db_connection() discard_persistent_db_connection()
如果连接创建失败,会抛出异常,进而跳转到统一的异常处理点,如果超过重试次数,将后端降级,并最终调用pgpool.conf配置文件里设置的failover_command。
main() PgpoolMain() if(processState == PERFORMING_HEALTH_CHECK) process_backend_health_check_failure() degenerate_backend_set(&health_check_node_id,1) degenerate_backend_set_ex() register_node_operation_request(NODE_DOWN_REQUEST) failover() trigger_failover_command()
failover()的切换过程
kafkaaka2016-12-13 09:31:03
skykiker:确认一下是不是所有事务都是read committed, 另外你是在什么情况下触发发这个问题的,怎么复现?
我们的版本是9.3. After discussing this with the PostgreSQL developers, it appears to be a behavior change/regression introduced in 9.3, and fixed in upcoming 9.5. So 9.3 brings many performance improvements for concurrent transactions,
but actually makes this case worse.
The problem has to do with one transaction repeatedly acquiring the sam
skykiker2016-12-12 22:21:50
kafkaaka:hi,你好。想咨询个问题,PostgreSQL的事务隔离级别read committed是这个。但是日志里面报错:Postgresql could not serialize access due to concurrent update。 我网上看了下,之前一直以为是在可串行化隔离级别下才会报这个错。现在能在日志里面找出来这一行,但是为什么会报这个错,如何解决呢。 求大神指教一下,解决不了这个问题。。。
确认一下是不是所有事务都是read committed, 另外你是在什么情况下触发发这个问题的,怎么复现?
回复 | 举报