Mysql--锁

[亡魂溺海] 提交于 2019-11-29 04:42:31
  • 锁目的
    • 解决并发情况下资源抢夺问题, 维护数据的⼀一致性
    • mysql的锁虽然开发者可以⼿手动设置, 但⽐比较影响并发性, ⼀一般会 使⽤用乐观锁代替 ( 如Django中
      到库存问题)
    • 由于mysql会⾃自动使⽤用锁, 所以需要了了解锁机制, 以便便优化数据库并发能⼒力力

  • 粒度/覆盖范围
    • 表级锁
      • 对整个表锁定, 并发差, 资源消耗少
    • 行级锁
      • 对数据⾏行行锁定, 并发好, 资源消耗多
    • 不同数据库引擎⽀支持的锁也不不同
      • MyISAM (5.5之前默认) ⽀支持表级锁
      • InnoDB ⽀支持⾏行行级锁和表级锁
  • 锁和事务
    • ⽆无论操作是否在事务中, 都可以获取锁, 只不不过在事务中, 获取的锁只有执⾏行行完事务才会释放
  • MyISAM
    • 只⽀支持表级锁
    • 表读锁/共享锁
      • 获取后, 其他请求可以读不不能写
    • 表写锁/排它锁
      • 获取后, 其他请求既不不能读也不不能写
    • 加锁⽅方式
      • 数据库⾃自动管理理, SELECT前给涉及的表添加读锁, 更更新前(增删改)给涉及的表加写锁
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!