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

知识点

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 , 然后可以用多个连接同时执行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文章导读: 累兮,累兮,要死兮...... 本文解决问题: 1、表级锁定(读锁、写锁) 2、行级锁定(共享锁、排他...
    创造new_world阅读 661评论 0 1
  • 一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种...
    忘忧谷主阅读 611评论 0 3
  • 一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种...
    不变甄心阅读 2,753评论 0 3
  • MyISAM 和 MEMORY 存储引擎采用的是表级锁;InnoDB 存储引擎即支持行级锁,也支持表级锁,但默认情...
    微日月阅读 918评论 0 0