当前位置: 美高梅棋牌 > 热门视频 > 正文

mysql 开采进级篇系列 12 锁难点(隔开品级下锁的异

时间:2019-11-01 21:14来源:热门视频
innodb行锁是基于索引实现的,如果不通过索引访问数据,innodb会使用表锁。 1. innodb在不同隔离级别下的一致性读及锁的差异 不同的隔离级别下,innodb处理sql时采用的一致性读策略和需
  1. innodb 行锁是基于索引实现的,如果不通过索引访问数据,innodb会使用表锁。

1. innodb在不同隔离级别下的一致性读及锁的差异
  不同的隔离级别下,innodb处理sql 时采用的一致性读策略和需要的锁是不同的,同时,数据恢复和复制机制的特点,也对一些sql的一致性读策略和锁策略有很大影响。对于许多sql, 隔离级别越高,innodb给记录集的锁就越严格(龙其是使用范围条件的时候),产生的锁冲突的可能性也就越高,对并发性事务处理性能的影响也就越大。因此,在应用中,应该尽量使用较低的隔离级别,减少锁争用。通常使用Read Commited隔离级别就足够了, 对于一些确实需要更高隔离级别的事务,可能在程序中执行 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 或SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE 动态来改变隔离级别。 

     http://www.cnblogs.com/MrHSR/p/9376086.html

  下面重点看下REPEATABLE READ与Read commited 锁申请的不同区别,在增删改查上申请的锁都是一致的,但在事务中锁释放的时间是不一样的这点需要注意。

 2. Innodb 间隙锁(Next-key)机制,以及innodb使用间隙锁的原因

SQL

  http://www.cnblogs.com/MrHSR/p/9390350.html

条件

 3.不同隔离级别下,innodb的锁机制和一致性读策略不同。

Read uncommited

  

Read commited

 4.mysql 的恢复和复制对innodb锁机制和一致性读策略也有较大影响。

Repeatable read

  

serializable

 5.调整锁冲突和死锁策略

Select

         5.1 尽量使用较低的隔离级别

 

         5.2 精心设计索引,并尽量使用索引访问数据,使加锁更精确,从而减少锁冲突的机会。

=

         5.3 选择合理的事务大小,小事务发生锁冲突的几率也更小。

None locks

         5.4 给记录集显示加锁时,最好一次性请求足哆级别的锁。比如要修改数据的话,最好直接申请排它锁,而不是先申请共享锁,修改时再请求排它锁,这样容易死锁。

Consisten read/

         5.5 不同程序访问一组表时,尽量约定以相同的顺序访问各表。

None locks

         5.6 尽量用相等条件访问数据,这样可以避免间隙锁对并发插入的影响。

Consisten read/

None locks

Share locks

范围

None locks

Consisten read/

None locks

Consisten read/

None locks

Share next-key

Update

=

X(排它锁)

X

X

X

范围

X next-key

X next-key

X next-key

X next-key

Insert

 

X

X

X

X

REPLACE

无键冲突

X

X

X

X

键冲突

X next-key

X next-key

X next-key

X next-key

Delete

 

=

X

X

X

X

范围

编辑:热门视频 本文来源:mysql 开采进级篇系列 12 锁难点(隔开品级下锁的异

关键词:

  • 上一篇:没有了
  • 下一篇:没有了