本篇文章主要介绍了"关系型数据库之Mysql引擎-日志-用户管理三",主要涉及到关系型数据库,Mysql方面的内容,对于其他数据库感兴趣的同学可以参考一下:
MySQL锁机制 相对其他数据库而言,MySQL的锁机制比较简单,其最显着的特点是不同的存储引擎支持不同的锁机制。执行操作时施加的锁的模式 读锁:...
MySQL锁机制
相对其他数据库而言,MySQL的锁机制比较简单,其最显着的特点是不同的存储引擎支持不同的锁机制。
执行操作时施加的锁的模式
读锁:用户在读的时候施加的锁,为防止别人修改,但是用户可以读,还被称为共享锁
写锁:独占锁,排它锁。其他用户不能读,不能写
MySQL大致可归纳为以下3种锁:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般
锁的实现位置:
MySQL锁:可以手动使用,可以使用显示锁
存储引擎锁:自动进行的(隐式锁),
显示锁:
lock tables:施加锁
LOCK TABLES
tbl_name lock_type
[, tbl_name lock_type]
锁的类型:
READ | WRITE
unlock tables:解锁
案例演示之读锁:
客户端A:对student表施加读锁
mysql> LOCK TABLES student READ;
mysql> UNLOCK TABLES;

客户端B:对student表执行编辑操作,可以看到是无法正常执行的,查询操作没有问题:
mysql> select * from student;
mysql> update student set Class = 1 where Age = '18';

下图为解锁后执行的语句结果:

案例演示之写锁:
客户端A:对student表施加写锁