MySQL技术文章
-
从隔离级别、索引条件和扫描区间入手,分析 MySQL InnoDB 间隙锁与临键锁造成的并发插入阻塞,并给出复现和收敛方法。390 收藏 -
用 MySQL EXPLAIN ANALYZE 对比同一迭代器的估算 rows 与 actual rows,判断低估、高估及统计信息失真的处理方向。389 收藏 -
MySQL 连接属性不会自动把会话送进资源组。本文用 session_connect_attrs 识别连接,再通过 SET RESOURCE GROUP 完成调度,并给出线程核对、权限与连接池复用的配置方法。388 收藏 -
通过订单累计示例解释 MySQL 窗口函数 ROWS 与 RANGE 的边界差异,定位并列排序值、默认帧、NULL 和类型限制导致的结果异常。387 收藏 -
MySQL Prepared statement 通常按会话缓存内部结构;引用表或视图的元数据变化、表定义缓存刷新时,下一次执行会自动重新预编译。本文用触发清单和 Com_stmt_reprepare 说明排查边界。387 收藏 -
MySQL CHECK 失败后,先从错误中取得约束名,再用 SHOW CREATE TABLE 和 INFORMATION_SCHEMA.CHECK_CONSTRAINTS 反查表达式,最后把候选值拆成多个布尔子条件逐列计算。本文还说明 TRUE、FALSE、UNKNOWN、NULL 与隐式类型转换的差异。386 收藏 -
MySQL 组合索引不是把高选择性列简单排在最前面,而要先看等值条件、范围条件和排序的连续性。本文用列表查询说明索引列顺序、函数表达式、filesort 与回表如何一起判断。385 收藏 -
MySQL InnoDB 默认 REPEATABLE READ 下,普通 SELECT 读取的是事务快照。本文用两个会话说明新提交为何暂时不可见,以及如何选择 COMMIT、READ COMMITTED 或 FOR SHARE。385 收藏 -
MySQL 的 TIMESTAMP 会按连接时区与 UTC 做转换,DATETIME 则保存字面上的日期时间。本文从瞬时事件、预约时间、连接会话和 2038 年范围几个边界出发,整理跨时区业务的选型和检查方法。384 收藏 -
一次报表临时表误清空事故,带你看清 MySQL 中 TRUNCATE TABLE 的隐式提交边界、为什么 ROLLBACK 救不回来,以及线上清理表数据时怎样保留可回退窗口。382 收藏 -
MySQL 复制过滤不是按配置文件书写顺序覆盖,而是先改写库名,再判断库级规则,最后按精确表 do、精确表 ignore、通配表 do、通配表 ignore 的固定顺序命中即退出。本文结合 STATEMENT、ROW 与 DDL 的差异,给出可推演的判断方法。382 收藏 -
MySQL 8.4 中,RANGE 和 ROWS 看起来只差一个单词,却会在同分值、时间范围和滚动统计中产生不同结果。通过订单金额累计和 7 天滑动平均两个例子,定位默认窗口边界并给出验收方法。380 收藏 -
MySQL 用 SUM OVER 计算累计值时,如果希望每个月重新开始,关键不是给 SUM 加条件,而是把包含年份的月份键放进 PARTITION BY,并用稳定的时间与主键排序。本文给出可直接改写的 SQL 和排查清单。380 收藏 -
MySQL JSON 列不能直接按任意路径高效过滤时,可以用 generated column 把固定路径提取成可索引的 SQL 类型。本文从表达式、字符排序规则、VIRTUAL/STORED 和 EXPLAIN 四个方面给出实现方法与边界。377 收藏 -
MySQL 8.0 的 SELECT FOR UPDATE NOWAIT 能在目标行被占用时立即返回,而不是让请求排队。本文用订单库存场景拆解锁冲突返回、事务回滚与唯一索引边界。376 收藏