MYSQL中锁的理解

  1. ** 锁是干嘛的?**
    是为了保证数据库当中数据的一致性,并发情况下事务操作经常会发生对同一条数据进行操作,导致我们读写发生异常。
    有以下几种情况:
    脏写(写写操作):A修改了数据,B也修改了数据,B回滚,那个A的修改也不能生效。这种情况很严重,基本任何事务隔离级别都会杜绝这种情况
    脏读(写读):B开启事务,修改改了一条数据,然后A去读取,之后B又回滚(rollback)了,那么A读了就是错误的数据。
    不可重复读(读写读):A读到了ID=1的数据,比如是张飞,B修改数据为刘备,A在读一次ID=1的数据,这时数据为刘备了,这叫不可重复读。
    幻读:A取了一个数据集,比如ID>1,这时有2条数据,B往这张表添加了一条数据,这时A再读,就有3条,这种现象叫做幻读。
    锁就是为了保证数据正确读写的一种手段。

  2. 有哪几种锁
    主要有表级锁,行级锁,页锁,我们一般用到行级锁
    表级锁:
    比如,MyISAM就是表级锁,最大的特征就是写的优先级大于读,当一个进程进行写操作,会阻塞其他进程。所以MyISAM并发比较差。
    行级锁:innodb,有共享锁和排它锁。意向排它锁,意向共享锁。行级锁只能作用于索引上。

发布了33 篇原创文章 · 获赞 1 · 访问量 8317

猜你喜欢

转载自blog.csdn.net/u012914309/article/details/101422182
今日推荐