锁是计算机协调多个线程访问同一个系统资源的机制
锁的分类:
- 从数据的操作类型分为:读锁和写锁
- 从数据的操作粒度分为:行锁和表锁
表锁
偏读,MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,并发度最低
添加锁
lock table 数据表名 read/write,数据表2 read/write...
-- 比如我要给mylock表加读锁,给book表加写锁
lock table mylock read,book write;
查看那些表被加了锁
show open tables;
第三列In_use字段如果为1则表示加锁了
释放所有表的锁
unlock tables;
执行完该命令后在执行show open tables;
命令就会发现所有数据表的in_use字段都为0了。
加锁对我们的数据操作和系统性能有什么影响
结论:
如果在会话1中给某个数据表加了读锁,其他会话就只能查看该表的数据,会话1不能对当前表进行修改操作,会报错;会话1也不能查询其他未加锁的数据表。而其他会话如果对该数据表进行修改