一.Mysql锁分类
表级锁:开销小,加锁块;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发性也最高。
页面锁:开销和加锁界于表锁和行锁之间,会出现死锁;锁定粒度界与表锁和行锁之间,并发一般。
二.MyISAM1.MyISAM不支持事物;
2.MyISAM只支持表锁;
不能在表损坏后恢复数据;
MyISAM表锁有两种模式:表共享读锁(table read lock)和表独占写锁(table write lock),锁的解释如下:
myISAM表的读操作,不会阻塞其他用户对同一个表的读请求,但会阻塞对同一个表的写请求。
myISAM表的写操作,会阻塞其他用户对同一个表的读和写操作。
myISAM表的读、写操作之间、以及写操作之间是串行的。
适合在以下几种情况下使用:
做很多count的计算
查询非常频繁
MyISAM在执行查询前,会自动执行表的加锁、解锁操作,一般情况下不需要用户手动加、解锁,但是有的时候也需要显示加锁。当然也可以用union做关联查询代替
1 lock table t1 read, t2 read; 2 select count(t1.id) as 'total' from t1; 3 select count(t2.id) as 'total' from t2; 4 unlock tables;