摘要: 行级锁 MySQL 行锁是一种在数据库表中针对单个行记录进行锁定的机制,用于实现并发控制,确保在同一时间只有一个事务可以对特定的行进行修改,从而避免数据冲突和不一致性。 记录锁(Record Lock): 锁住某行记录,分为读写锁,事务提交后自动释放,例如select * from table_na 阅读全文
posted @ 2025-03-18 11:18 Zero&&One 阅读(43) 评论(0) 推荐(0)
摘要: 1.连接器:建立连接,管理连接、校验用户身份; 2,查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL8.0已删除该模块; 3,解析SQL:通过解析器对SQL查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型 4,执行SQL:执行SQL共有三 阅读全文
posted @ 2025-03-18 11:09 Zero&&One 阅读(27) 评论(0) 推荐(0)
摘要: MySQL在执行SELECT语句时,遵循特定的执行顺序。以下是SELECT语句的执行步骤: FROM 子句:FROM子句是SQL语句的起点,决定了查询的数据源。在这一步,MySQL会确定查询的数据表 JOIN 操作:如果查询中包含多个表的联接操作,MySQL会在FROM子句后执行联接操作。 WHER 阅读全文
posted @ 2025-03-18 11:07 Zero&&One 阅读(56) 评论(0) 推荐(0)
摘要: 读未提交下: 增:插入数据后,给新插入的数据上记录锁,防止其它事务更改这条记录 删:需要获取到要删除的记录的记录锁,保证删除的时候其它事务没在使用这些数据,并保证删除后其它事务无法对这些数据进行操作 改:给需要更改的数据上记录锁 查:普通select不上锁,直接读最新数据,不管是否提交,select 阅读全文
posted @ 2025-03-18 11:05 Zero&&One 阅读(27) 评论(0) 推荐(0)
摘要: MySQL服务端是允许多个客户端连接的,这意味着 MySQL 会出现同时处理多个事务的情况。 那么在同时处理多个事务的时候,就可能出现 脏读(dirtyread):如果一个事务「读到」了另一个「「未提交事务修改过的数据,就意味着发生了「脏读」现象。 不可重复读(non-repeatableread) 阅读全文
posted @ 2025-03-18 11:02 Zero&&One 阅读(47) 评论(0) 推荐(0)
摘要: InnoDB引擎支持的数据库查数据时,默认是锁行 在使用 InnoDB 引擎的 MySQL 查询数据时,默认情况下 是锁行,而不是锁表。InnoDB 引擎支持 行级锁,它会尽可能地使用行级锁来提高并发性能,避免不必要的锁竞争和死锁。 不过,具体会锁表还是锁行取决于以下几个因素: 1. 普通 SELE 阅读全文
posted @ 2025-03-18 10:52 Zero&&One 阅读(116) 评论(0) 推荐(0)
摘要: 1、唯一索引等值查询 当我们用唯一索引进行等值查询的时候,查询的记录存不存在,加锁的规则也会不同: 当查询的记录是「存在」的,在索引树上定位到这一条记录后,将该记录的索引中的 next-key lock 会退化成「记录锁」。 当查询的记录是「不存在」的,在索引树找到第一条大于该查询记录的记录后,将该 阅读全文
posted @ 2025-03-18 10:51 Zero&&One 阅读(21) 评论(0) 推荐(0)