假设在 mysql 中,我想更新其中一个表中的列。我需要选择记录并更改值,然后将其更新回数据库。在某些情况下,我无法在一个 sql 查询中执行这两个操作并将它们嵌套到子查询中(由于 mysql 限制),我必须将其加载到程序中(比如说 Java),更改值,然后放回数据库。
例如,程序 A 获取一列的值,并希望将其增加一,然后将其放回。同时,程序 B 也想做同样的事情。在程序A放回增加的值之前,程序B已经得到了错误的值(程序B应该得到程序A增加的值,但它与程序A同时运行,所以它检索到的值与程序A相同)一个)。
现在我的问题是,处理这类问题的好方法是什么?
我的另一个问题是,我认为mysql不应该是一个单线程系统,但是假设有两个相同的查询(它们正在更新同一个表,相同的列和相同的记录)同时进来,mysql如何处理这种情况?哪个mysql先调度,哪个后调度?
此外,谁能解释一下mysql在多线程支持中是如何工作的?一个连接一个线程?那么在该连接下创建的所有语句都会安排在同一个队列中吗?