MySQL为_update()选择_并触发。。阻塞是如何工作的?
我有一个整数值的行,该行上有许多并发请求,我希望每个读取操作后面都有一个更新操作(增量),并保持数据一致,同时只有一个请求可以读取->更新。MySQL为_update()选择_并触发。。阻塞是如何工作的?,mysql,sql,django,database,innodb,Mysql,Sql,Django,Database,Innodb,我有一个整数值的行,该行上有许多并发请求,我希望每个读取操作后面都有一个更新操作(增量),并保持数据一致,同时只有一个请求可以读取->更新。 我做了一些研究,找到了select_for_update(),我还想在select上做一个触发器,在选择后增加值,问题是。。这会像我假设的那样有效吗? 触发器是并行工作还是以这种方式一致?djangoselect\u for\u update是select的包装器。。。for update功能存在于最常见的数据库(postgres、mysql、or
我做了一些研究,找到了select_for_update(),我还想在select上做一个触发器,在选择后增加值,问题是。。这会像我假设的那样有效吗?
触发器是并行工作还是以这种方式一致?django
select\u for\u update
是select的包装器。。。for update
功能存在于最常见的数据库(postgres、mysql、oracle…)中,它基本上针对并发更新锁定所选行
您需要将锁包装到事务中,以便在事务执行结束之前锁定访问。如果我使用transaction.atomic()打开事务,并在transaction.atomic()语句中使用select\U for\U update(),行是否会锁定到事务的最后一行。atomic()块?是,所有匹配的行将被锁定,直到事务块结束。您可以通过在事务块中放入时间睡眠来测试此行为,并在执行仍在块内时尝试更新行。