<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
      <title>Shizi&#039;s Blog</title>
      <link>https://shiziblog.cn</link>
      <description>Last 10 notes on Shizi&#039;s Blog</description>
      <generator>Quartz -- quartz.jzhao.xyz</generator>
      <item>
    <title>About</title>
    <link>https://shiziblog.cn/about</link>
    <guid>https://shiziblog.cn/about</guid>
    <description><![CDATA[ About Shizi's Blog - a developer's CS study notes ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>Changelog</title>
    <link>https://shiziblog.cn/changelog</link>
    <guid>https://shiziblog.cn/changelog</guid>
    <description><![CDATA[ 📋 Changelog All notable changes to this blog will be documented here. ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>Shizi&#039;s Blog</title>
    <link>https://shiziblog.cn/</link>
    <guid>https://shiziblog.cn/</guid>
    <description><![CDATA[ CS fundamentals study notes: networking, OS, MySQL, Redis, and interview prep ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>01_执行一条_select_语句，期间发生了什么？</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/1_%E5%9F%BA%E7%A1%80%E7%AF%87/01_%E6%89%A7%E8%A1%8C%E4%B8%80%E6%9D%A1_select_%E8%AF%AD%E5%8F%A5%EF%BC%8C%E6%9C%9F%E9%97%B4%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/1_%E5%9F%BA%E7%A1%80%E7%AF%87/01_%E6%89%A7%E8%A1%8C%E4%B8%80%E6%9D%A1_select_%E8%AF%AD%E5%8F%A5%EF%BC%8C%E6%9C%9F%E9%97%B4%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F</guid>
    <description><![CDATA[ # 执行一条 select 语句，期间发生了什么？ 大家好，我是小林。 学习 SQL 的时候，大家肯定第一个先学到的就是 select 查询语句了，比如下面这句查询语句： // 在 product 表中，查询 id = 1 的记录 select * from product where id = 1; 但是有没有想过，MySQL 执行一条 select 查询语句，在 MySQL 中期间发生了什么？ 带着这个问题，我们可以很好的了解 MySQL 内部的架构，所以这次小林就带大家拆解一下 MySQL 内部的结构，看看内部里的每一个“零件”具体是负责做什么的。 # MySQL 执行流程是怎样的？ 先... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>02_MySQL_一行记录是怎么存储的？</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/1_%E5%9F%BA%E7%A1%80%E7%AF%87/02_MySQL_%E4%B8%80%E8%A1%8C%E8%AE%B0%E5%BD%95%E6%98%AF%E6%80%8E%E4%B9%88%E5%AD%98%E5%82%A8%E7%9A%84%EF%BC%9F</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/1_%E5%9F%BA%E7%A1%80%E7%AF%87/02_MySQL_%E4%B8%80%E8%A1%8C%E8%AE%B0%E5%BD%95%E6%98%AF%E6%80%8E%E4%B9%88%E5%AD%98%E5%82%A8%E7%9A%84%EF%BC%9F</guid>
    <description><![CDATA[ # MySQL 一行记录是怎么存储的？ 大家好，我是小林。 之前有位读者在面字节的时候，被问到这么个问题： 如果你知道 MySQL 一行记录的存储结构，那么这个问题对你没什么难度。 如果你不知道也没关系，这次我跟大家聊聊 MySQL 一行记录是怎么存储的？ 知道了这个之后，除了能应解锁前面这道面试题，你还会解锁这些面试题： MySQL 的 NULL 值会占用空间吗？ MySQL 怎么知道 varchar(n) 实际占用数据的大小？ varchar(n) 中 n 最大取值为多少？ 行溢出后，MySQL 是怎么处理的？ 这些问题看似毫不相干，其实都是在围绕「 MySQL 一行记录的存储结构」这一个... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>01_索引常见面试题</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/01_%E7%B4%A2%E5%BC%95%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/01_%E7%B4%A2%E5%BC%95%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98</guid>
    <description><![CDATA[ # 索引常见面试题 大家好，我是小林。 面试中，MySQL 索引相关的问题基本都是一系列问题，都是先从索引的基本原理，再到索引的使用场景，比如： 索引底层使用了什么数据结构和算法？ 为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构？ 什么时候适用索引？ 什么时候不需要创建索引？ 什么情况下索引会失效？ 有什么优化索引的方法？ … TIP 光看不练，面试怎么能行？ 如果你想针对MySQL进展专项的模拟面试，可以用小林和朋友合作打造的「牛面AI面试 (opens new window)」来检测MySQL的掌握情况： 点击访问：MySQL专项面试 (opens new win... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>02_从数据页的角度看_B+_树</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/02_%E4%BB%8E%E6%95%B0%E6%8D%AE%E9%A1%B5%E7%9A%84%E8%A7%92%E5%BA%A6%E7%9C%8B_B+_%E6%A0%91</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/02_%E4%BB%8E%E6%95%B0%E6%8D%AE%E9%A1%B5%E7%9A%84%E8%A7%92%E5%BA%A6%E7%9C%8B_B+_%E6%A0%91</guid>
    <description><![CDATA[ # 从数据页的角度看 B+ 树 大家好，我是小林。 大家背八股文的时候，都知道 MySQL 里 InnoDB 存储引擎是采用 B+ 树来组织数据的。 这点没错，但是大家知道 B+ 树里的节点里存放的是什么呢？查询数据的过程又是怎样的？ 这次，我们从数据页的角度看 B+ 树 ，看看每个节点长啥样。 # InnoDB 是如何存储数据的？ MySQL 支持多种存储引擎，不同的存储引擎，存储数据的方式也是不同的，我们最常使用的是 InnoDB 存储引擎，所以就跟大家图解下InnoDB 是如何存储数据的。 记录是按照行来存储的，但是数据库的读取并不以「行」为单位，否则一次读取（也就是一次 I/O 操作）... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>03_为什么_MySQL_采用_B+_树作为索引？</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/03_%E4%B8%BA%E4%BB%80%E4%B9%88_MySQL_%E9%87%87%E7%94%A8_B+_%E6%A0%91%E4%BD%9C%E4%B8%BA%E7%B4%A2%E5%BC%95%EF%BC%9F</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/03_%E4%B8%BA%E4%BB%80%E4%B9%88_MySQL_%E9%87%87%E7%94%A8_B+_%E6%A0%91%E4%BD%9C%E4%B8%BA%E7%B4%A2%E5%BC%95%EF%BC%9F</guid>
    <description><![CDATA[ # 为什么 MySQL 采用 B+ 树作为索引？ 大家好，我是小林。 「为什么 MySQL 采用 B+ 树作为索引？」这句话，是不是在面试时经常出现。 要解释这个问题，其实不单单要从数据结构的角度出发，还要考虑磁盘 I/O 操作次数，因为 MySQL 的数据是存储在磁盘中的嘛。 这次，就跟大家一层一层的分析这个问题，图中包含大量的动图来帮助大家理解，相信看完你就拿捏这道题目了！ # 怎样的索引的数据结构是好的？ MySQL 的数据是持久化的，意味着数据（索引+记录）是保存到磁盘上的，因为这样即使设备断电了，数据也不会丢失。 磁盘是一个慢的离谱的存储设备，有多离谱呢？ 人家内存的访问速度是纳秒级... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>04_MySQL_单表不要超过_2000W_行，靠谱吗？</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/04_MySQL_%E5%8D%95%E8%A1%A8%E4%B8%8D%E8%A6%81%E8%B6%85%E8%BF%87_2000W_%E8%A1%8C%EF%BC%8C%E9%9D%A0%E8%B0%B1%E5%90%97%EF%BC%9F</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/04_MySQL_%E5%8D%95%E8%A1%A8%E4%B8%8D%E8%A6%81%E8%B6%85%E8%BF%87_2000W_%E8%A1%8C%EF%BC%8C%E9%9D%A0%E8%B0%B1%E5%90%97%EF%BC%9F</guid>
    <description><![CDATA[ # MySQL 单表不要超过 2000W 行，靠谱吗？ 作为在后端圈开车的多年老司机，是不是经常听到过： “MySQL 单表最好不要超过 2000W” “单表超过 2000W 就要考虑数据迁移了” “你这个表数据都马上要到 2000W 了，难怪查询速度慢” 这些名言民语就和 “群里只讨论技术，不开车，开车速度不要超过 120 码，否则自动踢群”，只听过，没试过，哈哈。 下面我们就把车速踩到底，干到 180 码试试……. ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item><item>
    <title>05_索引失效有哪些？</title>
    <link>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/05_%E7%B4%A2%E5%BC%95%E5%A4%B1%E6%95%88%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F</link>
    <guid>https://shiziblog.cn/%E5%9B%BE%E8%A7%A3MySQL/2_%E7%B4%A2%E5%BC%95%E7%AF%87/05_%E7%B4%A2%E5%BC%95%E5%A4%B1%E6%95%88%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F</guid>
    <description><![CDATA[ # 索引失效有哪些？ 大家好，我是小林。 在工作中，如果我们想提高一条语句查询速度，通常都会想对字段建立索引。 但是索引并不是万能的。建立了索引，并不意味着任何查询语句都能走索引扫描。 稍不注意，可能你写的查询语句是会导致索引失效，从而走了全表扫描，虽然查询的结果没问题，但是查询的性能大大降低。 今天就来跟大家盘一盘，常见的 6 种会发生索引失效的场景。 不仅会用实验案例给大家说明，也会清楚每个索引失效的原因 。 发车！ # 索引存储结构长什么样？ 我们先来看看索引存储结构长什么样？因为只有知道索引的存储结构，才能更好的理解索引失效的问题。 索引的存储结构跟 MySQL 使用哪种存储引擎有关，... ]]></description>
    <pubDate>Mon, 23 Feb 2026 09:02:39 GMT</pubDate>
  </item>
    </channel>
  </rss>