1:我们先从库存表中取出物品数量
2:插入订单
3:付款后插入付款表
4:然后更新商品数量
在这个过程中,使用锁可以对有限的资源进行保护,解决隔离和并发的矛盾;
锁的概念:
锁是计算机协调多个进程或线程并发访问某一资源的机制...在数据库中数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素;
锁对数据库而言显得尤其重要,也更加复杂...InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但是默认情况下采用的是行级锁
表级锁:开销小,加锁快;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低....有兴趣,大家自己试一试,我觉得没啥用,了解一下就可以,就没有Demo了
还有一个坑就是,加锁的时候锁的表名是可以做别名的,如果没有做别名,那么只能查锁的那个表名,查询时不能采用别名,如果想用,请在锁的时候加上... TABLE命令给表F添加读锁,这个Session可以查询锁定表中的记录,但更新或访问其他表都会提示报错;
另一个Session可以查询表中的记录,但更新会出现锁等待
对MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作