首页 > Mysql用到什么级别会考虑到锁这个东西?

Mysql用到什么级别会考虑到锁这个东西?

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


什么时候你需要考虑锁?

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

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

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


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

【热门文章】
【热门文章】