zoukankan      html  css  js  c++  java
  • mysql原理~latch与lock

     
    innodb latch与lock
    1 mutex 互斥锁
    目的 其目的是为了保证并发线程操作临界资源的正确性。通常没有死锁的检测机制
    查看 通过show engine innodb status可以查看
    相关参数 1 count mutex锁被请求的次数
    2 spin_wait 因为等待mutex锁引起的自旋转次数,若自旋转后还不能获得,则进入等待状态
    3 os_wait 当自旋转期间内不能获得mutex锁 就会进入os等待状态
    4 os_wait_times os等待时间
    补充:
    1 互斥锁(Mutex)保证了使用资源线程的唯一性和排他性,但是无法限制资源释放后其他线程申请的顺序问题,所以是无序的。
    而信号量(Semaphore)一般就是互斥的(少许情况读取是可以同时申请的),其保证了线程执行的有序性,
    2 不同场景需要的mutex 是不一样的, 比如buffer pool 上面的page 的mutex 希望的就是一直spin. 有些mutex 其实则是希望立刻就进入等待, 只用使用这些mutex 的使用者知道接下来哪一个策略更合适
    2 lock 读写锁 目的 对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务commit或者rollback后进行释放。有死锁检测机制
       锁类型  1 排他锁  2 共享锁
       锁范围  1 全局锁(FTWDL) 2  表锁(1 MDL锁2 myisam 表级锁  3 innodb表级锁) 3 行锁
       引擎层锁粒度  1 row-lock 2 gap-lock 3 next-key-lock锁 4 插入意向锁 5自增锁
    3 总结
    在InnoDB存储引擎中,latch又分为mutex互斥锁 和 rwLock读写锁。其目的是为了保证并发线程操作临界资源的正确性。通常没有死锁的检测机制。
    lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务commit或者rollback后进行释放。有死锁检测机制。
  • 相关阅读:
    闲谈系列之一——数据库主键GUID
    一个简单通用权限管理系统,求各位帮忙看看
    php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)
    创建虚拟机流程详细过程链接
    阿里云CDN加速设置
    sublime Text3 快捷键
    Linux命令(centos7)
    分布式数据库
    mysql 分区和分表
    Linux crontab 命令格式与详细例子
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/12630772.html
Copyright © 2011-2022 走看看