PostgreSQL高并发单行更新发生死锁 2015
发布时间:2020-12-13 17:13:27 所属栏目:百科 来源:网络整理
导读:这么简单的一条SQL,100个并发时居然会发生死锁,太不可思议了。 发生死锁的SQL update_smallrange.sql: setrandom id 1 10000 update maintb set name = 'aaaaa12345' where id = : id ; 服务端日志: 点击( 此处 )折叠或打开 2015 - 01 - 16 20 : 56 : 4
这么简单的一条SQL,100个并发时居然会发生死锁,太不可思议了。 发生死锁的SQL update_smallrange.sql:
服务端日志: 点击( 此处 )折叠或打开
但是我的case也不是每次再现,之前测试的时候几乎100%的 再现概率,但是 过了几天,相同的环境却一次也没再现过。 今天偶然翻了下社区的邮件列表,发现这是个已知的BUG。 http://www.postgresql.org/message-id/20140731233051.GN17765@andrew-ThinkPad-X230 这个BUG报告中的错误消息有两种,其中一种和我的是一样的 死锁错误1: 点击(此处)折叠或打开
死锁错误2: 点击(此处)折叠或打开
这个BUG在9.3.x(9.3.4和9.3.5)上会存在,9.0和9.1等早期版本没有问题 。用我们公司的术语说就是LevelDown了。
好消息是已经有这个BUG的Patch出来了,相信下次的PG版本发布会解决这个问题。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |