mysql同时并发多个修改同一数据请求的问题?

mysql同时并发多个修改同一数据请求的问题?,第1张

一般很少会有这种情况出现的。

MySql有自己的锁机制,当执行一个修改 *** 作时,MySql会对这个 *** 作上锁。

此时如果接收到另外的修改请求,那么这个请求就会因已经上了锁而被压入执行队列。

当先前那个 *** 作完成后,锁才会打开,那么,MySql才会去队列里取出下一个 *** 作来执行。

所以你不必要有这样的担心啊。

如果出现这种情况,那说明你的数据已经出现问题了

您好,MySQL高并发添加列的方法有多种,主要有以下几种:

1. 使用ALTER TABLE语句:使用ALTER TABLE语句可以在表中添加新的列,可以在表中添加多个列,也可以在表中添加多个列,但是在高并发的情况下,这种方法可能会导致表锁,影响性能。

2. 使用CREATE TABLE语句:使用CREATE TABLE语句可以在表中添加新的列,可以在表中添加多个列,这种方法可以避免表锁,但是在高并发的情况下,可能会导致数据不一致,所以不推荐使用。

3. 使用INSERT INTO语句:使用INSERT INTO语句可以在表中添加新的列,可以在表中添加多个列,这种方法可以避免表锁,也可以保证数据的一致性,但是在高并发的情况下,可能会导致性能下降,所以也不推荐使用。

4. 使用存储过程:使用存储过程可以在表中添加新的列,可以在表中添加多个列,这种方法可以避免表锁,也可以保证数据的一致性,而且在高并发的情况下,可以提高性能,所以是比较推荐使用的方法。

我理解的是:读表的锁表是指在读的过程中上锁,不允许中途还insert其他记录,当读表完毕,获得select结果后,表就解锁了,可以继续新的select或insert等 *** 作。

例子里:2人同时借钱,没有业务锁的话,两个请求发到后端后可能同时去select,此时2次借款 *** 作select余额都是1000(在另一人借200后回写余额800之前),于是2个请求 *** 作各自开始借钱,算出借钱后都剩下800,再分别update进表中,表里余额就是800

如果加业务锁:2个请求到后端后,select余额和借钱后Update按一个事务进行,那第1人select 1000元并借款后剩下800更新进表中,完成第1人借钱事务后,再进行第2人借钱select 剩下的800元并借款后剩下600更新进表中,就可以避免


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6115451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存