zoukankan      html  css  js  c++  java
  • 更换隔离级别,提高innodb性能

    大家都知道innodb的间隙锁的纯在是为了防止幻读,因为其默认隔离级别是REPEATABLE READ ,

    不加间隙锁的话没法保证这个隔离级别。

    ====================================================

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

    ====================================================

    其实我们shopex旗下的产品都没有用到事务编程,很多表默认都是myisam的,转innodb引擎纯粹是为了并发性能,使用行锁,像类似的情况很多,REPEATABLE READ这个隔离级别有些高,很容易产生next-key 间隙锁,从而影响性能。

    倒不如把隔离级别改成READ COMMITTED ,完全满足条件又不会产生间隙锁。oracle 和postgresql 的默认级别也是这个。当然使用行锁也是有前提的,必须在利用索引的情况下才用到行锁,否则则还是表锁。这个跟他的实现有关。

    =============================

    InnoDB行锁是通过给索引上的索引项加锁来实现的。

    =============================

  • 相关阅读:
    第8周课下作业1(补)
    第八章课下测试
    POJ
    POJ
    HDU
    UVa
    UVa
    CodeForces
    ZOJ
    LightOJ
  • 原文地址:https://www.cnblogs.com/gqdw/p/2933321.html
Copyright © 2011-2022 走看看