为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

为什么用 PostgreSQL 绑定变量 没有 Oracle pin S 等待问题

德哥 2016-06-17 09:47:21 浏览3837
展开阅读全文

早上看到盖国强老师在朋友圈里分享了一篇关于软解析带来的Pin S等待的问题。
有感而发,跟大家聊一聊为什么PostgreSQL不存在这个问题。

Oracle

在Oracle中多个会话高并发的执行同一条SQL,如果使用了绑定变量的话,会产生pin s的等待事件。
原因如下(取自互联网http://www.dbafree.net/?p=778

每个child cursor(你可以认为是一条SQL的plan tree)下面都有一个mutexes这样的简单内存结构,当有session要执行该SQL而需要pin cursor操作的时候,session只需要以shared模式set这个内存位+1,表示session获得该mutex的shared mode lock.可以有很多session同时具有这个mutex的shared mode

网友评论

登录后评论
0/500
评论
德哥
+ 关注
所属云栖号: 阿里云数据库ApsaraDB