mysql innodb引擎 insert 数据时 默认会加什么锁

我最近做一个抽奖活动
每个人只能抽一次

我想每个抽奖请求进来,先插入一条记录,然后再读取第一条记录进行比对,以此确定他是否第一次抽奖,如果不是第一次就把这个无用记录删除,并返回错误

这样会有大量的innsert delete操作
这两个操作会锁表吗?

阅读 3.4k
4 个回答

用redis缓存拦截,再用ON DUPLICATE KEY UPDATE看返回影响行数,返回结果

innodb引擎的insert,update,delete操作都会给操作数据加上排他锁(行级锁).这时候其他事务是没法对这行数据进行操作的.

1.感觉你这样麻烦了
2.InnoDB是行锁

除了@start2004的回答外,还可以把每个角色的请求放到一个单独的队列中执行,这样就可以先查询再插入了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题