Mysql用到什么级别会考虑到锁这个东西?
大家讲道理
大家讲道理 2017-04-17 11:26:34
[MySQL讨论组]

最近在学习MYSQL。一个Mysql可能有多个用户。其中一些用户在读,一些用户在写。用户读的时候就不能写了。用户写的时候就不能读了。如果用户多了的话,会不会造成用户读写的混乱?因为我听到有人说,当高并发的情况下,即使是简单的update语句,也有可能出现问题。
请赐教。下面是URL:
[链接]http://segmentfault.com/q/1010000000534200#a-1020000000534867

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
巴扎黑
什么时候你需要考虑锁?

你自己实现一个多线程的程序的时候,有可能有多个线程对同一个变量进行修改,也就是所谓的资源竞争。这时候你需要自己去维护这个变量,在一个线程对这个变量进行写操作前必须先获取锁,操作完毕以后必须释放锁

数据库层面怎么防止资源竞争

数据库中对单一资源的修改,比如你在数据库中有一张表,数据库会帮你维护好,不让多个线程同时去修改它。但是数据库层面有一个更重要的话题——一致性,比如汇款操作:
1. A的金额扣除100元
2. B的金额增加100元
如果数据库在做完第一步,但是正要做第二步的时候崩溃了怎么办?是不是凭空就少了100元。
所以在数据库中会去强调事务的原子性,1和2两步要么都做了,要么都不做。所以在数据库中,你不用去担心单一资源的锁的问题。而应该考虑将多个相互紧密关联的操作放进一个事务里。

迷茫

所谓的update语句出现问题,是由于设计上的问题,而不是mysql本身的问题,比如你的那个链接里的例子,扣钱=读钱+计算扣完后的钱+写入扣完后的钱,如果把整个操作做成原子的,就不会出现该问题,比如说在存储过程中锁表/锁行来完成扣钱而不是在web后台来完成扣钱。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号