当前位置: 首页 > news >正文

七宝做网站ps做电商网站图标

七宝做网站,ps做电商网站图标,小公司做网站,如何做百度推广MySQL 的锁机制是数据库并发控制的核心,InnoDB 存储引擎提供了多种锁类型来保证数据的一致性和完整性。下面我将系统性地讲解 MySQL 的锁机制。 1. 锁的基本分类 1.1 按锁的粒度划分 锁类型描述特点常见存储引擎表锁锁定整张表开销小,加锁快&#xff…

        MySQL 的锁机制是数据库并发控制的核心,InnoDB 存储引擎提供了多种锁类型来保证数据的一致性和完整性。下面我将系统性地讲解 MySQL 的锁机制。

1. 锁的基本分类

1.1 按锁的粒度划分

锁类型描述特点常见存储引擎
表锁锁定整张表开销小,加锁快;并发度低MyISAM, InnoDB等
行锁锁定索引记录开销大,加锁慢;并发度高InnoDB
页锁锁定一页(介于表锁和行锁之间)已弃用,被行锁取代BDB(已淘汰)
  • 为什么表锁开销小?

    • 表锁只需在内存中维护一个锁结构(整个表1个锁)。

    • 行锁需要为每行/每个索引条目维护锁结构(可能成千上万个锁)。

  • 为什么行锁并发度高?

    • 表锁:任何写操作会阻塞其他所有读写操作(如UPDATE会阻塞所有SELECT)。

    • 行锁:只有访问同一行的事务会相互阻塞(不同行可并发操作)。

  • InnoDB的锁实现特点

    • 默认使用行锁,但无索引或索引失效时会退化为表锁(例如:UPDATE table WHERE non_index_column=1)。

    • 意向锁(IS/IX)是表级锁,用于快速判断表中是否有行被锁定。

  • 如何避免锁升级?

    • 确保查询走索引:通过EXPLAIN验证。

    • 避免长事务:长时间未提交的事务会持有锁。

  • 经典案例验证

    -- 会话1(使用行锁,有索引)
    BEGIN;
    UPDATE users SET name='张三' WHERE id=1;  -- 只锁定id=1的行-- 会话2(并发操作不受影响)
    UPDATE users SET name='李四' WHERE id=2;  -- 正常执行-- 会话3(无索引退化为表锁)
    UPDATE users SET name='王五' WHERE name='老用户';  -- 若name无索引,会锁定整个表

1.2 按锁的性质划分

锁类型描述兼容性
共享锁(S)读锁,允许多个事务同时读取与S锁兼容,与X锁互斥
排他锁(X)写锁,独占锁,阻止其他任何锁与所有锁都互斥
意向锁表级锁,表明事务将要锁定某些行IS/IX之间兼容

2. InnoDB 行锁详解

2.1 记录锁(Record Lock)

  • 锁定索引中的单条记录

  • 通过索引条件精确匹配时触发

-- 对id=1的记录加X锁
SELECT * FROM users WHERE id = 1 FOR UPDATE;

2.2 间隙锁(Gap Lock)

  • 锁定索引记录之间的间隙

  • 防止幻读问题的关键

  • 只在REPEATABLE READ隔离级别下有效

-- 锁定id在(5,10)区间的间隙
SELECT * FROM users WHERE id BETWEEN 5 AND 10 FOR UPDATE;

2.3 临键锁(Next-Key Lock) 

  • 记录锁 + 间隙锁的组合

  • 锁定记录及记录前面的间隙

  • InnoDB默认的行锁算法

-- 锁定id>=5的记录及前面的间隙
SELECT * FROM users WHERE id >= 5 FOR UPDATE;

2.4 插入意向锁(Insert Intention Lock)

  • 特殊的间隙锁

  • 多个事务在相同间隙插入不同数据时不互相阻塞

3. 表级锁

3.1 意向锁(Intention Lock)

  • 表级锁,表明事务将要锁定表中的某些行

  • 类型:

    • IS(意向共享锁):事务打算在某些行上加S锁

    • IX(意向排他锁):事务打算在某些行上加X锁

3.2 自增锁(AUTO-INC Lock)

  • 特殊表锁,用于自增列插入

  • 保证自增ID连续且唯一

3.3 元数据锁(MDL)

  • 系统自动加锁,保护表结构

  • 访问表时会自动加MDL读锁

  • 修改表结构时会加MDL写锁

http://www.dtcms.com/a/508677.html

相关文章:

  • [css] flex布局中的英文字母不换行问题
  • wordpress爬虫采集惠州seo排名公司
  • 电白区建设局网站社交网站怎么做
  • 5 款 PDF 翻译工具深度测评:从格式到免费权限全解析
  • flash-attention连环问答--softmax 、safe softmax 、online softmax
  • 温州网站建设企业包装回收网站建设
  • 有没有做彩票直播的网站做一个网站开发项目有哪些阶段
  • 网站建设沛宣跨境电商自建站是什么意思
  • 降水数据下载:GSMaP卫星 1998-2025年 逐小时、逐天、逐月 0.1°空间分辨率
  • 【复习】计网每日一题1020---路由条目
  • 怎么注册网站挣流量免费制作个人简历的网站
  • 【11408学习记录】[特殊字符] ​​考研数学线性代数攻坚:正定二次型通关攻略+惯性定理核心突破​
  • 网站建设服务公司案例网站gif图标
  • 做jsp网站用哪些软件网站开发遇到的问题
  • reactjs 做网站共同建设网站协议
  • 工作证明怎么写渭南seo公司
  • wordpress 小说多站免费购物商城网站建设
  • 1.基于cuda的异构计算
  • # 高并发内存池开发记录 - 04
  • 姜堰网站定制广告公司宣传册设计
  • Python 字符串前缀使用技巧详解
  • 自学Unity第一周笔记
  • zabbix安装部署
  • 特殊教育学校网站建设方案网页制作软件山水
  • 网站建设朝阳网站加百度商桥
  • xxx学校校园网站建设实践网站做网页
  • 镇江网站设计公司报价苏州工程建设网
  • C语言文件操作全解析
  • 网页设计与网站建设毕业设计制作公司网站视频
  • 个人可以做几个网站吗建网站的步骤及方法