update跟select的表锁问题 (mysql myisam)

u012914916 2015-01-08 11:38:22
请问,某个页面被访问时,它需要先从表B里找出随机词的ID(字段:now_id),然后再去表A里查找这个随机词。

当从表B里select出这个随机词的ID(now_id)后,会now_id+1。

但现在的问题是,可能是因为瞬间的访问量很大,导致表B里update根本没完成就又select了。。。我很纳闷,,既然有update,不是应该update完之后才会select吗,,update会自动加写锁,然后应该等update执行完才可以执行select。

我现在想要让它update完再select,又不至于造成阻塞。。


$sql = "select * from fan_keyword where id=(select fval from hao_fan_temp where fkey='keyword_produce_id' limit 1)";
$result = mysql_query($sql);
$arr = mysql_fetch_assoc($result);
if(!empty($arr))
{
$keyname = $arr['name'];
$idd = intval($arr['id']) + 1;
}else{
$sql = "select * from fan_keyword limit 1";
$result = mysql_query($sql);
$arr = mysql_fetch_assoc($result);
$keyname = $arr['name'];
$idd = intval($arr['id']) + 1;
}
$sql1 = "update hao_fan_temp set fval='$idd' where fkey='keyword_produce_id'";
mysql_query($sql1) or exit('auto_produce: 保存当前抽取的词ID失败');
...全文
244 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
u012914916 2015-01-09
  • 打赏
  • 举报
回复
我想我搞错了,应该是select的时候有读锁,但是不阻塞同一时间其他进程的读操作,所以它读的还是之前的那个数据

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧