<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Lock on 分享技术带来的喜悦</title><link>https://bridgeli.cn/tags/lock/</link><description>Recent content in Lock on 分享技术带来的喜悦</description><generator>Hugo -- 0.156.0</generator><language>zh</language><lastBuildDate>Sun, 16 Aug 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://bridgeli.cn/tags/lock/index.xml" rel="self" type="application/rss+xml"/><item><title>深入理解 MySQL MVCC 与锁机制：从底层原理到可见性算法实战</title><link>https://bridgeli.cn/posts/2026-08-16-mysql-mvcc-lock/</link><pubDate>Sun, 16 Aug 2026 10:00:00 +0800</pubDate><guid>https://bridgeli.cn/posts/2026-08-16-mysql-mvcc-lock/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;本文写给谁看&lt;/strong&gt;：刚接触 MySQL、听过 MVCC / 事务隔离 / 幻读这些词但总觉得云里雾里的同学。
&lt;strong&gt;怎么读&lt;/strong&gt;：全文按&amp;quot;先建立直觉 → 再看原理 → 最后实战排错&amp;quot;的顺序展开，每一章都可以独立看懂。遇到不懂的名词别慌，文中都会用大白话解释。
&lt;strong&gt;读完你能收获&lt;/strong&gt;：① 彻底搞懂事务隔离级别；② 明白 MVCC 到底在干什么；③ 能手算&amp;quot;某条数据该不该被看到&amp;quot;；④ 知道 RC 和 RR 差在哪；⑤ 理解幻读为什么会发生、怎么防；⑥ 看懂 InnoDB 的各种锁；⑦ 掌握死锁排查思路。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="开篇一个让你头疼的场景"&gt;〇、开篇：一个让你头疼的场景&lt;/h2&gt;
&lt;p&gt;假设你开了两家银行柜台（两个事务），同时操作同一个账户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;柜员 A 正在给账户&lt;strong&gt;改余额&lt;/strong&gt;（写）；&lt;/li&gt;
&lt;li&gt;柜员 B 只想&lt;strong&gt;查一下余额&lt;/strong&gt;（读）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最笨的办法是：&lt;strong&gt;A 改的时候把账户锁起来，B 必须干等&lt;/strong&gt;。这就是&amp;quot;加锁&amp;quot;方案——简单，但慢得要命，因为读和写互相堵。&lt;/p&gt;
&lt;p&gt;MySQL 的 InnoDB 引擎想了个聪明的办法：&lt;strong&gt;既然 B 只是想&amp;quot;看一眼&amp;quot;，那我给它看一张&amp;quot;刚才的快照照片&amp;quot;不就行了？A 继续在原件上改，互不影响。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个&amp;quot;拍快照、看历史版本&amp;quot;的机制，就叫 &lt;strong&gt;MVCC（Multi-Version Concurrency Control，多版本并发控制）&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🎯 &lt;strong&gt;一句话记住 MVCC&lt;/strong&gt;：它让&amp;quot;&lt;strong&gt;读不加锁、读写不冲突&lt;/strong&gt;&amp;ldquo;成为可能，是 MySQL 高并发的功臣。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;整篇文章，其实就是围绕&amp;rdquo;&lt;strong&gt;这张快照是怎么拍的、什么时候拍的、能看到什么&lt;/strong&gt;&amp;ldquo;这三个问题展开的。我们一步步来。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一前置知识先把地基打好"&gt;一、前置知识：先把地基打好&lt;/h2&gt;
&lt;p&gt;在讲 MVCC 之前，有三个概念你必须先认识，否则后面会看不懂。别担心，都很简单。&lt;/p&gt;
&lt;h3 id="11-什么是事务"&gt;1.1 什么是&amp;quot;事务&amp;rdquo;？&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;事务 (Transaction)&lt;/strong&gt; 就是&amp;quot;一组要么全成功、要么全失败的操作&amp;quot;。最经典的例子是转账：A 扣 100 元、B 加 100 元，这两步必须一起成功，不能 A 扣了钱 B 却没收到。&lt;/p&gt;</description></item></channel></rss>