行锁(出现在InnoDB数据库引擎中,InnoDB的行锁还是表锁取决于筛选条件中字段是否建立了索引,如果筛选条件中的字段建立了索引,则是行锁,如果没有建立索引,加的就是表锁)
1.优点
锁的粒度小,发生锁冲突的概率比较低,处理并发能力强
2.缺点
开销大,加锁慢,会出现死锁
3.加锁方式
自动加锁:对于增删改等操作,InnoDB会自动给涉及到的数据集加上排他锁;对于查询操作InnoDB不会加任何锁
表锁(出现在MyISAM、MEMORY、MERGE数据库引擎中)
1.优点
开销小,加锁速度快,不会出现死锁
2.缺点
锁的粒度比较高,发生锁冲突的概率比较大,处理并发性能低
3.加锁方式
自动加锁:增删改操作会自动给涉及到的表加写锁,查询操作会自动给涉及到的表加读锁
写锁(排他锁):其他事务不能读也不能写
读锁(共享锁):其他事务可以读但不能写