MySQL技术文章
-
MySQL 分区表清理历史数据时,DROP PARTITION 为什么通常比逐行 DELETE 更快?本文从分区边界、索引与日志工作粒度解释差异,并给出执行前后的核对清单。461 收藏 -
MySQL 事件显示执行过但任务表没有更新时,先查 event_scheduler 和事件状态,再核对计划、时区、DEFINER 权限、错误日志与 SQL 条件,避免把调度成功误判成业务写入成功。486 收藏 -
把连接字符集改成 utf8mb4 不会自动改变表和索引,但列字符集迁移可能让索引前缀的字节数重新触及 InnoDB 上限。本文给出区分连接设置、核算前缀和安全迁移的检查方法。344 收藏 -
MySQL LOAD DATA 导入含换行文本时,要分清字段内的\n转义、CSV 引号包围的真实换行,以及记录本身的行结束符。本文按源文件形态说明 TERMINATED BY、ENCLOSED BY、ESCAPED BY 和 LOCAL 的边界,并给出导入后的核对清单。284 收藏 -
判断 MySQL 派生表物化后是否溢出磁盘,不能只看 Created_tmp_disk_tables。本文从 EXPLAIN、tmp_table_size、TempTable 资源、Performance Schema 和 InnoDB 临时表空间五个证据点说明如何定位。126 收藏 -
MySQL InnoDB 改用 READ COMMITTED 后,主要减少非唯一索引范围上的间隙锁与不匹配行的锁保留;普通 SELECT、锁定读、外键检查和重复键检查仍需分开判断。284 收藏 -
MySQL 联合索引缺少中间列时,后缀列通常不能像连续最左前缀一样直接定位,但可能参与索引条件检查。本文用执行计划区分查找、过滤与 Skip Scan,并给出索引调整判断方法。358 收藏 -
从递归终止条件、循环数据和 cte_max_recursion_depth 三个方向排查 MySQL CTE 超过默认深度的问题,并给出可回滚的保护配置。270 收藏 -
MySQL 使用 ROW_NUMBER() 遇到并列排序值时,不能依赖数据库自行决定顺序;为窗口 ORDER BY 补上唯一键,并同步外层排序,才能让编号、Top N 和分页结果稳定可复现。418 收藏 -
MySQL EXPLAIN 的 filtered 很低,不等于索引一定失效。本文从 rows 与 filtered 的乘积、残余条件、实际执行行数和统计信息入手,给出先查什么、何时 ANALYZE TABLE、何时再改索引的排查顺序。244 收藏 -
MySQL JSON 列不能直接建立普通索引时,可以用生成列抽取稳定的标量值,再按正确类型建立索引。本文说明 JSON_EXTRACT、JSON_UNQUOTE、生成列和 EXPLAIN 之间的关系。401 收藏 -
用 mysqldump 的一致性读、备份时点 GTID 和副本状态联合确认 InnoDB 在线备份的快照边界,解释为什么 Seconds_Behind_Source 不能单独证明备份一致。323 收藏 -
MySQL GTID 切换前不要只看延迟或最后编号,本文用 GTID_SUBSET、GTID_SUBTRACT、复制状态和备份检查点建立可执行的事务连续性检查清单。357 收藏 -
MySQL 8.4 InnoDB 修改大表列类型通常只能使用 ALGORITHM=COPY。本文从表副本、锁、磁盘、异步复制和原子 DDL 五个边界说明如何估算变更窗口与回退方案。393 收藏 -
MySQL InnoDB 在线新增二级索引时,ALGORITHM 决定变更实现方式,LOCK 表达并发读写要求。本文用场景、决策表和 SQL 示例说明怎么选,以及哪些情况下应让变更直接失败。393 收藏