<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>cevin (cevin)</title>
    <link>https://ruby-china.org/cevin</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>PostgreSQL 的 pg_try_advisory_xact_lock 正确使用姿势是什么</title>
      <description>&lt;p&gt;看到 pg_try_advisory_xact_lock（咨询锁）可以事务中免等待&lt;/p&gt;

&lt;p&gt;实际场景是啥？&lt;/p&gt;

&lt;p&gt;看很多描述是秒杀场景，那就拿秒杀来说，，一件商品，多人下单，那就是多个事物，只有一个人能下单（扣减库存）成功。&lt;/p&gt;

&lt;p&gt;然后没拿到锁的呢？直接前端抛出个抢购失败的异常？然后刷新页面一看还有库存？业务代码逻辑自动重试？重试多少次呢？&lt;/p&gt;

&lt;p&gt;因为很多场景其实并不都是极限秒杀场景（成百上千人抢），可能就是平常的一个商品，某个店铺搞了个活动（平台也不晓得）突然就大流量上来了。&lt;/p&gt;

&lt;p&gt;就是不固定不定时毫无预兆的普通商品抢购，自动重试次数少了，刷新页面看还有库存。自动重试次数多了，那还不如事物里锁这条数据呢。&lt;/p&gt;

&lt;p&gt;更具体的使用场景或姿势是啥？&lt;/p&gt;</description>
      <author>cevin</author>
      <pubDate>Sat, 03 Jul 2021 19:50:06 +0800</pubDate>
      <link>https://ruby-china.org/topics/41439</link>
      <guid>https://ruby-china.org/topics/41439</guid>
    </item>
  </channel>
</rss>
