-
** 锁是干嘛的?**
是为了保证数据库当中数据的一致性,并发情况下事务操作经常会发生对同一条数据进行操作,导致我们读写发生异常。
有以下几种情况:
脏写(写写操作):A修改了数据,B也修改了数据,B回滚,那个A的修改也不能生效。这种情况很严重,基本任何事务隔离级别都会杜绝这种情况
脏读(写读):B开启事务,修改改了一条数据,然后A去读取,之后B又回滚(rollback)了,那么A读了就是错误的数据。
不可重复读(读写读):A读到了ID=1的数据,比如是张飞,B修改数据为刘备,A在读一次ID=1的数据,这时数据为刘备了,这叫不可重复读。
幻读:A取了一个数据集,比如ID>1,这时有2条数据,B往这张表添加了一条数据,这时A再读,就有3条,这种现象叫做幻读。
锁就是为了保证数据正确读写的一种手段。 -
有哪几种锁
主要有表级锁,行级锁,页锁,我们一般用到行级锁
表级锁:
比如,MyISAM就是表级锁,最大的特征就是写的优先级大于读,当一个进程进行写操作,会阻塞其他进程。所以MyISAM并发比较差。
行级锁:innodb,有共享锁和排它锁。意向排它锁,意向共享锁。行级锁只能作用于索引上。
MYSQL中锁的理解
猜你喜欢
转载自blog.csdn.net/u012914309/article/details/101422182
今日推荐
周排行