多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
mysql还有页面锁,开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 # 简介 比如有如下操作: (1)从数据库中取出id的值(比如id=100) (2)把这个值-1(id=100-1) (3)再把该值存回到数据库(id=99) 假如id=100 有两个进程(用户)同时操作, 进程1: id=100 id = 100-1 id = 99 进程2: id=100 id = 100-1 id=99 mysql中的锁:同一个时间只有一个人可以获得锁,其他人只能阻塞等待第一个人释放锁。 进程1(用户) | 进程2(用户) | 进程3(用户) | --- | --- | --- | get lock | 等待 | 等待 id = 100 | 等待 | 等待 100-1 | 等待 | 等待 id =99 | 等待 | 等待 unlock | get lock | 等待 锁主要作用是管理共享资源的并发访问,用于实现事务的隔离性 # 锁的演示 锁机制: 当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能相互影响),通过加锁来处理。 操作方面: 读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是所有人都只可以读,只有释放锁之后才可以写。 写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,只有锁表的客户可以操作(读写)这个表,其他客户读都不能读。 锁定粒度(范围) 表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。 myisam引擎的表支持表锁, 行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。 innodb引擎的表支持行锁与表锁。