美文网首页
07 | 行锁功过:怎么减少行锁对性能的影响?

07 | 行锁功过:怎么减少行锁对性能的影响?

作者: carlclone | 来源:发表于2019-06-26 13:18 被阅读0次

    知识点

    1 行锁是引擎层的
    2 两阶段锁 , 语句执行的时候加上 , 事务结束的时候释放 , 两阶段也是原子性的一个体现吧
    3 把最可能锁冲突的放事务最后面
    4 一个影院买票的事务案例 , 语句顺序安排
    5 死锁 , 循环资源依赖 , 陷入无线等待
    6 死锁策略 : 等到超时 , innodb_lock_wait_timeout 参数 默认 50s
    7 死锁检测 , 主动回滚其中一个 , innodb_deadlock_detect on
    8 死锁超时时间太短可能误伤 , 可能是普通的锁等待
    9 死锁检测消耗大 , 会遍历其他事务判断是否被别人锁住
    10 列举了一个极端死锁检测情况
    11 可以关掉死锁检测的场景 , 业务上作保证
    12 控制并发度 , 减少死锁成本
    13 一行逻辑上改为多行 , 减少死锁发生几率
    14 一个问题 , 删除表中前 10000 行 , 单语句时间长 , 锁时间长 , 导致主从延迟 第二种 OK , 第三种会发生死锁 , 其他解决方案 , 先拿到 每 500 个 的 第一个ID , 然后可以用多个连接同时执行

    相关文章

      网友评论

          本文标题:07 | 行锁功过:怎么减少行锁对性能的影响?

          本文链接:https://www.haomeiwen.com/subject/vjbqcctx.html