gpt4 book ai didi

来自存储功能的 MySQL 锁定表

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:51 25 4
gpt4 key购买 nike

我在 MySQL 数据库中有一个函数可以确定移动设备的一些同步参数。该函数确定用户与数据库同步的最后日期/时间。在同步操作期间,我两次调用此服务器端函数。一旦我第二次调用它——整个 Sync_Records 表就被锁定了。我无法从任何地方的任何其他连接写入它(注意,在第一次调用后,表未锁定)。我将函数更改为过程 - 一切都很好 - 第二次调用后没有锁定。整个同步操作(包括对函数/过程的调用)都在一个事务中。这是一个 InnoDb 表。

函数/过程只执行两个选择语句。它们将结果存储在局部变量中,然后返回日期时间变量。我不明白为什么表被锁定。有人有什么想法吗?

最佳答案

stored program restrictions 中指定节

A stored function acquires table locks before executing, to avoid inconsistency in the binary log due to mismatch of the order in which statements execute and when they appear in the log. When statement-based binary logging is used, statements that invoke a function are recorded rather than the statements executed within the function. ...

In contrast, stored procedures do not acquire table-level locks. All statements executed within stored procedures are written to the binary log, even for statement-based binary logging

关于来自存储功能的 MySQL 锁定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649690/

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