锁:表锁,页锁(锁定一个数据块),行锁
行锁需要存储引擎完成,mysql服务器仅仅支持表锁
手动锁表
lock tables +tb_name +锁类型;
锁类型
- read(读锁)
- write(写锁)
读锁是共享锁
读的时候允许其他人同时读,
写锁是独占锁
写的时候不允许他人同时读,或者写
大多数时候mysql会自己加锁,比如你执行updata语言更新一个表的时候,mysql会自动给那个表加一个锁,这样会导致其他用户无法读,或者写。
我们也可以使用手动加锁。一般来讲我们并不需要手动加锁。但是有些场景就必须要加锁,比如实现数据块的热备份的时候
解锁
unlock tables;
mysql 支持锁的范围
- 表锁
- 行锁(innodb)