在电商项目的抢购或其他并发量比较大的项目中,往往会遇到很多人同时操作一张表的情况,这样就会造成读写的错误,特别是写

先看一下不加锁会出现什么情况

先创建一张表

正常情况下,右边的php文件执行几次数据表中的id就加几,应该如下图所示,但是高并发时并不是这样

 

 

现在用ab模拟并发的情况,这里一共请求100次,我们想要的结果是5+100=105,

 

 

来看下结果,php文件执行了100次数据却只加到46,明显不是我们想要的结果

 

 

那么现在来加锁试一下

 

 

再将文件执行100次

 

 

查看结果,46+100=146正是我们想要的结果

 

优化:

  给数据库加锁存在一种弊端,就是加锁操作时,别人无法读取数据库数据,造成堵塞

想让修改时别人可以正常读取数据,可以使用文件锁

 

 

执行测试命令

 

 

查看结果,正是我们想要的