gpt4 book ai didi

mysql - 多线程环境中的 SELECT FOR UPDATE

转载 作者:行者123 更新时间:2023-11-29 09:46:55 24 4
gpt4 key购买 nike

I',在多线程环境中编写 MySQL 查询,以便该查询可以在任意给定数量的线程上执行。我的数据库是使用 InnoDB 引擎的 MySQL 8。

假设我有一个包含 10 个数字的数据库表 (1,2,3,4,5,6,7,8,9,10)

我有一个 SELECT ... FOR UPDATE 查询,数据库表中的行数限制为 2 行。 FOR UPDATE 将锁定行以确保隔离。如果我有 5 个同时启动的线程,线程 1 将获取条目 1 和 2,线程 2 会看到线程 1 获取条目 1 和 2,因此它将获取条目 3 和 4.. 等等。

它会这样吗?

最佳答案

不,锁不应该对查询计划产生影响。查询将尝试选择符合 WHEREORDER BY 标准的行。如果它们被另一个线程锁定,它将阻塞。

此外,锁定还取决于 WHEREORDER BY 子句是否使用索引列。如果您检查非索引列,则必须扫描整个表才能查找或排序行,这将有效锁定整个表。如果将这些子句限制为索引列,它应该只能在这些索引上设置锁定。

参见use of LIMIT, FOR UPDATE in SELECT statement在 MySQL 论坛中获取更多信息。

关于mysql - 多线程环境中的 SELECT FOR UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55506128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com