<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[柳絮飘扬]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_44007213</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_44007213]]></copyright><item><title><![CDATA[uv管理环境与jupyter使用]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/167585658</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/167585658</guid><author>weixin_44007213</author><pubDate>Sun, 11 Oct 2026 15:25:33 +0800</pubDate><description><![CDATA[装包 uv add xxx # 跑代码 uv run xxx # 全局工具 uv tool install xxx # 同步环境 uv sync# 1. 装 Jupyter（项目或全局）uv add jupyterlab # 项目内uv tool install jupyterlab # 全局# 2. 注册 kerneluv run python -m ipykernel install --user --name=项目名# 3. 启动。]]></description><category></category></item><item><title><![CDATA[补充：备份与恢复]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/165430495</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/165430495</guid><author>weixin_44007213</author><pubDate>Tue, 15 Sep 2026 08:43:08 +0800</pubDate><description><![CDATA[支持在线热备；不需要长时间锁住 InnoDB 表；支持全量备份；支持增量备份；恢复速度通常比逻辑备份快；可以结合 Binlog 实现时间点恢复。MySQL 版本常用工具MySQL 5.7MySQL 8.0MySQL 8.4应使用支持 MySQL 8.4 的对应版本不要简单地使用 XtraBackup 2.4 备份 MySQL 8.0，也不要跨大版本混用。]]></description><category></category></item><item><title><![CDATA[补充：mysql配置文件基础版]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/164338023</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/164338023</guid><author>weixin_44007213</author><pubDate>Thu, 03 Sep 2026 17:57:49 +0800</pubDate><description><![CDATA[【代码】补充：mysql配置文件基础版。]]></description><category></category></item><item><title><![CDATA[基础：mysql事务]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/164092097</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/164092097</guid><author>weixin_44007213</author><pubDate>Wed, 26 Aug 2026 16:50:32 +0800</pubDate><description><![CDATA[事务（Transaction）是由一个或多个数据库操作组成的逻辑工作单元，其中的操作要么全部成功，要么全部失败。COMMIT;如果任意一步失败，应执行ROLLBACK，避免出现一方扣款、另一方未到账的问题。转账、支付和结算创建订单并扣减库存同时更新多张关联表用户注册及初始化数据概念关键点事务多个操作作为一个整体提交或回滚ACID原子性、一致性、隔离性、持久性隔离级别在一致性与并发性能之间权衡MVCC通过版本链和 Read View 实现一致性读Redo Log。]]></description><category></category></item><item><title><![CDATA[补充：mysql配置文件]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/164056398</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/164056398</guid><author>weixin_44007213</author><pubDate>Tue, 25 Aug 2026 14:52:40 +0800</pubDate><description><![CDATA[MySQL 配置文件用于设置服务端、客户端、日志、连接和 InnoDB 等参数。Linux 中通常为或，Windows 中通常为my.ini。多个配置文件同时存在时，后读取的配置可能覆盖前面的同名配置。]]></description><category></category></item><item><title><![CDATA[补充：权限与角色]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/164053345</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/164053345</guid><author>weixin_44007213</author><pubDate>Tue, 25 Aug 2026 13:15:43 +0800</pubDate><description><![CDATA[MySQL 8.0 不再允许通过创建用户，应先，再GRANT。MySQL 8.0 原生支持角色，可实现“用户—角色—权限”的分层管理。MySQL 8.0 引入动态权限，将部分高风险管理能力从SUPER中拆分出来。MySQL 8.0 默认认证方式发生变化，旧客户端可能需要升级。MySQL 5.7 没有原生角色，通常通过授权模板和自动化平台模拟。不论使用哪个版本，都应遵循最小权限、限制来源、一人一账号、定期审计等安全原则。]]></description><category></category></item><item><title><![CDATA[补充：数据库执行慢问题排查思路]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/163720467</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/163720467</guid><author>weixin_44007213</author><pubDate>Fri, 14 Aug 2026 14:49:38 +0800</pubDate><description><![CDATA[！！不要一上来就排查慢sql！！！不要一上来就排查慢sql！！！不要一上来就排查慢sql可能并不是sql或者索引的原因，就像做手术一样，你的看下病人的整体状况才能清楚。]]></description><category></category></item><item><title><![CDATA[补充：锁等待问题排查与解决]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/163672934</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/163672934</guid><author>weixin_44007213</author><pubDate>Wed, 12 Aug 2026 09:30:43 +0800</pubDate><description><![CDATA[在日常开发中，锁等待、死锁是 MySQL 令人头疼的问题。当数据库出现大量或时，快速定位并解决锁问题就显得尤为重要。本文将通过一张精心设计的实验表，带你直观感受 InnoDB 的行锁、间隙锁、临键锁及死锁的触发场景，并介绍排查锁等待的 SQL 命令与方法。]]></description><category></category></item><item><title><![CDATA[四：MVCC 深度解析：三事务并发全流程]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159206615</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159206615</guid><author>weixin_44007213</author><pubDate>Wed, 18 Mar 2026 14:30:54 +0800</pubDate><description><![CDATA[读不阻塞写，写不阻塞读：SELECT 不需要任何锁，直接读取对应版本，写操作不影响正在进行中的 SELECT。这是高并发 OLTP 场景的基础。COMMIT/ROLLBACK 极快：无论修改多少行，COMMIT 只写 CLOG 的几个 bit；ROLLBACK 同样只写 CLOG，数据页面不变。崩溃恢复简单：通过 WAL 重放就能恢复一致性，不需要回滚未提交事务的数据页（因为数据页中未提交事务的修改可以通过 CLOG 识别后忽略）。]]></description><category></category></item><item><title><![CDATA[三：页结构与剪枝]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159203112</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159203112</guid><author>weixin_44007213</author><pubDate>Wed, 18 Mar 2026 11:19:07 +0800</pubDate><description><![CDATA[快照（Snapshot）是 PostgreSQL 在某一时刻对"哪些事务已提交"的一张快照记录，它定义了当前查询"能看到什么数据"。快照不是数据的物理副本，而是由几个数字组成的轻量结构。Read Committed 隔离级别：每条 SQL 语句执行前重新获取快照Repeatable Read / Serializable 隔离级别：事务内第一条语句获取快照，整个事务共用页剪枝是 PostgreSQL 的一种轻量级、单页范围内的清理机制。]]></description><category></category></item><item><title><![CDATA[二：行记录结构深度解析]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159201768</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159201768</guid><author>weixin_44007213</author><pubDate>Wed, 18 Mar 2026 10:25:54 +0800</pubDate><description><![CDATA[PostgreSQL 行记录的设计哲学是将 MVCC 完全内嵌在每一行，以 Append-Only 的方式写入数据，用 xmin/xmax/ctid 在行头部维护完整的版本信息。特性原因COMMIT 极快只写 CLOG 的 2 bitROLLBACK 极快只写 CLOG，不回滚数据页读不阻塞写读操作找旧版本，写操作写新版本，互不干扰需要 VACUUMAppend-Only 导致旧版本堆积，必须定期清理所有索引地位平等索引与堆表完全分离，叶子都指向 TIDUUID 主键无负担。]]></description><category></category></item><item><title><![CDATA[高可用：Keepalived 配置文件详解]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159127093</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159127093</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 17:40:53 +0800</pubDate><description><![CDATA[定义"如何检测 MySQL 是否健康"以及"检测结果如何影响本节点的选举优先级"。# 要执行的脚本路径# 脚本返回 0 = 正常，返回非 0 = 故障# 每隔 2 秒执行一次检测interval 2# 单次脚本执行超时时间（秒）# 超时视为失败，建议设为 interval 的 2 倍以上timeout 5# 连续失败 2 次，才触发 weight 扣分（防止偶发抖动误切换）fall 2# 连续成功 1 次，即恢复正常状态rise 1# 检测失败时，将本节点优先级降低 30 分。]]></description><category></category></item><item><title><![CDATA[高可用：mysql主备keepAlived+vip]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159125671</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159125671</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 16:42:14 +0800</pubDate><description><![CDATA[实现简单：纯开源组件，配置成本低，运维人员容易上手切换快：正常情况下 5~10 秒完成故障切换，业务影响时间短无需改造应用：应用只需更改数据库连接地址为 VIP，无其他改动成本低：不需要额外的商业软件或云服务。]]></description><category></category></item><item><title><![CDATA[十三：InnoDB 锁机制]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159119318</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159119318</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 14:13:24 +0800</pubDate><description><![CDATA[死锁是指两个或多个事务互相持有对方需要的锁，陷入永久等待的状态。经典死锁场景：事务 A 事务 BBEGIN;BEGIN;WHERE id=1;-- 持有 id=1 的 X 锁WHERE id=3;-- 持有 id=3 的 X 锁WHERE id=3;-- 申请 id=3 的 X 锁，等待 B...WHERE id=1;-- 申请 id=1 的 X 锁，等待 A...-- 死锁！A 等 B，B 等 A，永远无法推进业务场景推荐方式理由普通读取快照读（普通 SELECT）]]></description><category></category></item><item><title><![CDATA[十二：InnoDB MVCC（多版本并发控制）]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159116249</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159116249</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 11:11:00 +0800</pubDate><description><![CDATA[通过隐藏列（trx_id + roll_pointer）将同一行数据的历史修改串成版本链，读操作在执行时生成 ReadView，根据活跃事务列表判断版本链上哪个版本对自己可见，从而实现无锁的并发读。隐藏列：每行数据携带"最后修改者"（trx_id）和"指向历史版本的指针"（roll_pointer），是版本链的基础设施。版本链（Undo Log 构成）：保存数据的所有历史版本，是 MVCC 的"时间机器"，让读操作可以回溯到任意历史时刻。ReadView。]]></description><category></category></item><item><title><![CDATA[十一：InnoDB Undo Log（回滚日志）]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114930</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114930</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 10:24:37 +0800</pubDate><description><![CDATA[事务执行顺序：操作1（UPDATE amount） → 生成 Undo Log #0操作2（UPDATE status） → 生成 Undo Log #1操作3（INSERT id=3） → 生成 Undo Log #2操作4（DELETE id=2） → 生成 Undo Log #3ROLLBACK 时，逆序撤销：undo_no=3 → 撤销 DELETE：清除 id=2 的删除标记↓undo_no=2 → 撤销 INSERT：物理删除 id=3↓。]]></description><category></category></item><item><title><![CDATA[十：InnoDB Redo Log-一条事务完整生命周期例子]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114617</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114617</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 10:12:23 +0800</pubDate><description><![CDATA[学习 MySQL 时，我们经常听到这些概念：Buffer Pool、Redo Log、Undo Log、脏页、Checkpoint、LSN……它们单独看都能讲清楚，但放在一起就容易混乱：它们到底在什么时候工作？谁先谁后？崩溃了数据为什么不丢？执行一条，假设 id=1 这条记录原来的 amount 是 200。从 BEGIN 到 COMMIT，从内存到磁盘，从正常流程到崩溃恢复，我们一步一步拆解，把每个细节都讲清楚。思路一：用顺序写代替随机写脏页刷盘是随机 I/O，速度慢；]]></description><category></category></item><item><title><![CDATA[九：InnoDB Redo Log（重做日志）]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114163</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159114163</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 09:51:51 +0800</pubDate><description><![CDATA[在 Redo Log 写入磁盘之前，InnoDB 会先将其写入内存中的Redo Log Buffer（重做日志缓冲区）。Redo Log Buffer 是一段连续的内存空间，内部由若干 512 字节的 Block 构成，通过-- 默认：16777216（16MB）参数默认值调优建议1生产环境保持1；对数据安全要求低的场景可设216MB有大事务或高并发写入时，适当增大至 64MB ~ 256MB48MB生产环境建议 512MB ~ 4GB，依据写入速率评估2。]]></description><category></category></item><item><title><![CDATA[八：InnoDB Buffer Pool]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159113552</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159113552</guid><author>weixin_44007213</author><pubDate>Mon, 16 Mar 2026 09:24:19 +0800</pubDate><description><![CDATA[磁盘页 ──加载──→ Buffer Pool（缓存页）│↓ ↓ ↓Free链表 LRU链表 Flush链表（空闲页） （冷热分区） （脏页管理）│（热数据│冷数据）Free 链表管理可用缓存页。哈希表实现 O(1) 定位缓存页。LRU 链表通过 young/old 分区解决缓存污染问题。Flush 链表管理脏页，实现异步刷盘。多实例 + Chunk提升并发能力并支持动态扩容。掌握这些底层机制，才能在生产环境中做出正确的参数调优决策，让 MySQL 发挥出最佳性能。]]></description><category></category></item><item><title><![CDATA[七：EXPLAIN 深度解析与 SQL 优化实战指南]]></title><link>https://blog.youkuaiyun.com/weixin_44007213/article/details/159014229</link><guid>https://blog.youkuaiyun.com/weixin_44007213/article/details/159014229</guid><author>weixin_44007213</author><pubDate>Fri, 13 Mar 2026 16:41:55 +0800</pubDate><description><![CDATA[EXPLAIN是 MySQL 提供的查询执行计划分析工具，它能告诉你 MySQL打算怎么执行这条 SQL，而不是实际去执行它。是否走了索引，走了哪个索引扫描了多少行数据是否产生了临时表、文件排序JOIN 的驱动表顺序是否合理-- 基本用法-- MySQL 8.0 支持 EXPLAIN ANALYZE（真实执行并返回实际耗时）-- 格式化输出（树形结构，更直观）]]></description><category></category></item></channel></rss>