首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL中获得第一个未锁定行

在MYSQL中获得第一个未锁定行
EN

Stack Overflow用户
提问于 2010-01-14 08:43:47
回答 1查看 424关注 0票数 2

当有人访问我的网站时,他会看到页面的浏览量最少。所有页面,包括页面查看计数器,都存储在MYSQL数据库中。如果查看页面,则页面查看计数器将增加一个。

如果我的now服务器有多个线程,我现在就会遇到一个赛车状态:

线程1:用户A检索页面P,页面浏览量为10

线程2:用户B退出页面P,页面浏览量为10

线程1:页面P的页面浏览量从10增加到11,并保存

线程2:页面P的页面浏览量从10增加到11,并保存了

所以在最后,页面被浏览了两次,但是分页器只增加了一个。

一种解决方案是使用SELECT .然而,对于更新,用户B必须等到记录用户A正在访问的记录被保存,并且由于许多线程都试图以最少的页面浏览量获得页面,因此将出现延迟。

所以我的问题是:当许多行被锁定时,是否有可能获得未锁定的第一行,这样线程就不必等待对方了?如何在MYSQL中这样做?

我希望找到一种解决办法,结果是:

线程1:用户A锁定页面P,页面浏览量为10

线程2:用户B锁定页面q,页面浏览量为11 (因为页面P被锁定)

线程1:页面P的页面浏览量从10增加到11,并保存

线程2:页q的页面浏览量从11增加到12,并保存了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-14 08:48:02

我猜你在做这样的事:

代码语言:javascript
复制
 UPDATE Pages SET PageView = 11 WHERE Id = 30

其中常量11和30是由代码插入的(PHP?)

一个更好的方法是这样做:

代码语言:javascript
复制
 UPDATE Pages SET PageView = PageView + 1 WHERE Id = 30

然后,您不需要在多个查询中锁定行,这样您想解决的问题就消失了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2063012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档