MySQL技术文章
-
MySQL invisible index 可以在不立即删除索引的前提下模拟它离开优化器候选集的影响。本文用 SHOW INDEX、EXPLAIN 和 use_invisible_indexes 对比查询计划,并说明如何安全回滚。263 收藏 -
订单清理任务执行 DELETE 时,真正拖慢速度的可能不是主表扫描,而是子表外键检查、级联删除和长事务锁范围。本文用订单与明细表的场景拆开执行路径,给出索引核对、分批删除和安全验收方法。262 收藏 -
数据库 · MySQL | 3天前 | MySQL · 执行计划 · 慢查询 · MySQL EXPLAIN ANALYZE MySQL估算行数实际行数 MySQL执行计划耗时 MySQL慢查询诊断 MySQL TREE执行计划
从 EXPLAIN 基线到 EXPLAIN ANALYZE 实测,按节点对比估算行数、实际行数、迭代耗时和 loops,定位统计信息与访问路径偏差。262 收藏 -
MySQL 用 BINARY(16) 存 UUID 可以减少存储空间,但 UUID_TO_BIN 的 swap_flag 必须和 BIN_TO_UUID 使用同一约定。本文用真实 SQL 输出对比原始顺序、交换时间段和错误还原,说明版本 1 UUID 的适用边界。261 收藏 -
MySQL 死锁日志中的表名、索引名、锁模式和记录值需要结合事务语句才能还原到 SQL。本文用 SHOW ENGINE INNODB STATUS 与 performance_schema.data_locks 说明如何区分持有锁和等待锁,并从索引记录反推 WHERE 条件与事务顺序。261 收藏 -
MySQL 8.4 的 CTE 不一定会生成临时结果集。本文用 EXPLAIN 和 optimizer_switch 判断 CTE 是被合并还是物化,并说明 derived_merge、NO_MERGE 与多次引用的边界。253 收藏 -
MySQL LOAD DATA 导入 TSV 时,字段内制表符要靠引号边界或反斜杠转义表达;本文给出两种写法,并用 HEX、CHAR(9) 和 SHOW WARNINGS 验证结果。253 收藏 -
MySQL 的 DDL 卡住时,先从 performance_schema.metadata_locks 区分等待者与持有者,再核对对象、线程和业务状态,确认影响后才决定终止会话。249 收藏 -
连接池让数据库线程看起来都一样时,可以查询 performance_schema.session_connect_attrs,用 ATTR_NAME、ATTR_VALUE 和 PROCESSLIST_ID 把连接还原到驱动、应用实例与线程,再结合连接状态完成定位。248 收藏 -
MySQL 8.4 中,可以只给一条只读 SELECT 设置毫秒级时间上限,不改变连接池里的全局会话默认值。本文用慢查询示例说明语句提示、会话变量、错误验证和不适用边界。247 收藏 -
从年龄计算的失败 DDL 出发,解释 MySQL 生成列的确定性要求,并对比动态查询、VIRTUAL、STORED 和生成列索引的选择。247 收藏 -
解释 MySQL 8.4 全局变量与连接会话变量的初始化关系,使用会话状态跟踪观察赋值变化,并给出连接池复用旧会话变量时的核对、修复与回归方法。245 收藏 -
MySQL EXPLAIN 的 filtered 很低,不等于索引一定失效。本文从 rows 与 filtered 的乘积、残余条件、实际执行行数和统计信息入手,给出先查什么、何时 ANALYZE TABLE、何时再改索引的排查顺序。244 收藏 -
MySQL 用 ROW_NUMBER 取每组最新记录时,如果时间相同,必须补充唯一且符合业务的排序键;若要保留全部并列最新行,应改用 RANK。本文用订单状态示例说明两种写法和检查清单。242 收藏 -
把 MySQL LOAD DATA 导入大文件从一次性命令升级成可回滚流程:先固定字符集和字段边界,再隔离错误行,最后用临时表与原子切换避免半成品进入业务表。240 收藏