当前位置:主页 > 查看内容

mysql数据库中的锁

发布时间:2021-08-18 00:00| 位朋友查看

简介:mysql的锁1)??innoDB的两种行锁 共享锁(shared lock) 读锁 就是多个事务只能读取数据不能修改数据。 排他锁(exclusive lock) 写锁 一个事务对一条记录加上排他锁 其他事务不能对该记录加其他的锁。事务可以通过以下语句显式给记录集加共享锁或排他锁 共享锁……
mysql的锁1)??innoDB的两种行锁

共享锁(shared lock) 读锁 就是多个事务只能读取数据不能修改数据。

排他锁(exclusive lock) 写锁 一个事务对一条记录加上排他锁 其他事务不能对该记录加其他的锁。事务可以通过以下语句显式给记录集加共享锁或排他锁

共享锁 S SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE。

排他锁 X SELECT * FROM table_name WHERE ... FOR UPDATE。


InnoDb行锁是通过给索引上的索引项加锁来实现的 这一点mysql与oracle不同 oracle是通过在数据块中对相应数据行加锁来实现的。InnoDb的这种行锁实现特点意味着 只有通过索引条件检索数据 InnoDb才会使用行级锁 否则InnoDb将使用表锁。


2 间隙锁 - 行锁

当我们用范围条件而不是相等条件检索数据 并请求共享或排他锁时 InnoDb会给符合条件的已有数据记录的索引项加锁 对于键值在条件范围内但不存在的记录 叫做间隙 GAP InnoDb也会对这个“间隙”加锁 这种机制就是所谓的“间隙锁”。

?

3)??悲观锁和乐观锁 - 行锁

悲观锁和乐观锁都是一种思想 并不是真实存在于数据中的一种机制。


4 意向锁-表锁意向共享锁:表达一个事务想要获取一张表中某几行的共享锁。意向排他锁:表达一个事务想要获取一张表中某几行的排他锁。


5) 自增长锁-表锁

自增长锁是一种特殊的表锁机制 提升并发插入性能。对于这个锁有几个特点:

在sql执行完就释放锁 并不是事务执行完。对于Insert。。。select大数据量插入会影响插入性能 因为会阻塞另外一个事务执行。自增算法可以配置。



获取锁的类型的sql

??show variables like innodb_autoinc_lock_mode ?


如何防止死锁以固定的顺序访问表和行。交叉访问更容易造成事务等待回路。尽量避免大事务 占有的资源锁越多 越容易出现死锁 可以拆成小事务。




本文转自网络,原文链接:https://developer.aliyun.com/article/787401
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:SEO入门一篇就够-SEO教程 下一篇:没有了

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐