MySQL技术文章
-
MySQL 查询明明给条件列建了索引,却因为字符串列与数字参数发生隐式类型转换而扫描变慢。本文用可复现实验说明转换发生在哪里、如何用 EXPLAIN 判断影响,并给出参数类型与字段设计的修复边界。303 收藏 -
MySQL 事务回滚后出现自增主键空洞并不代表数据错乱。本文用 INSERT、ROLLBACK 和并发场景说明 AUTO_INCREMENT 的分配边界,并给出业务编号与主键分工、复核和验收方法。429 收藏 -
EXPLAIN 里的 rows 只是优化器估算要扫描的索引记录数,不等于最终访问数据页的成本。本文用订单列表查询拆开回表、覆盖索引和分页取数的关系,并给出可复现的验收方法。475 收藏 -
删除 MySQL 主表记录时遇到外键失败,原因可能是子表仍有引用、约束动作不是预期,或事务锁尚未释放。本文用订单与订单明细场景区分 RESTRICT、CASCADE 和锁等待,并给出可复现的检查命令。403 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 执行计划 · InnoDB · 索引优化 · explain 函数索引 MySQL 8.4 Functional Key Parts 表达式索引
MySQL 8.4 函数索引可以直接为表达式结果建立索引,但表达式写法、数据类型、写入成本和查询计划都要一起验收。本文用订单日期与 JSON 状态筛选两个场景,说明什么时候该建函数索引、什么时候改写查询更稳。429 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 数据库 · 死锁 · InnoDB · 性能排查 · mysql innodb 死锁 事务 LATEST DETECTED DEADLOCK 锁顺序
MySQL 发生死锁后,不能只看报错回滚。本文从 SHOW ENGINE INNODB STATUS 的 LATEST DETECTED DEADLOCK 还原事务、锁资源和等待关系,再用相反锁顺序构造最小复现并给出上线前验收清单。480 收藏 -
MySQL 遇到 OR 条件时可能选择 Index Merge,但这不代表它一定优于联合索引。本文用订单筛选场景拆开合并扫描、回表、排序与改写边界,给出 EXPLAIN 和 EXPLAIN ANALYZE 的核对方法。451 收藏 -
同一条 MySQL 查询使用预编译参数后可能出现不同执行计划。本文从参数类型、隐式转换、索引可用性和 EXPLAIN 复核入手,给出可回归的排查与改写方法。280 收藏 -
MySQL EXPLAIN ANALYZE 会把优化器估算的成本与行数,和执行时的实际耗时、实际行数、循环次数放在同一棵执行树里。本文用订单查询的偏差案例,演示如何读 actual time、rows、loops,判断统计信息、索引选择和数据分布问题,并给出慢查询定位与回归检查方法。321 收藏 -
用 MySQL 8.4 的 authentication_policy 规划单因素与多因素账号,说明 caching_sha2_password、旧客户端兼容窗口和上线前登录验收方法。113 收藏 -
MySQL 8.4 Clone Plugin 适合把一个实例的 InnoDB 数据快速复制到另一个实例,但它不是跨大版本备份工具。本文从插件安装、捐赠端授权、接收端发起 CLONE INSTANCE,到版本、引擎和恢复结果核对,整理一条可回滚的实例级恢复路径。186 收藏 -
按月增长的订单或日志表,不必每次归档都全表搬运。本文用 MySQL 8.4 RANGE 分区示例,说明分区键设计、分区裁剪检查、按月新增与删除边界,以及上线前的回滚和验收方法。273 收藏 -
MySQL 大表使用 LIMIT offset,size 时,数据库往往仍要扫描并丢弃前面的记录,页码越深越慢。本文用订单列表说明游标分页如何配合复合索引、稳定排序和上一页游标,兼顾速度、重复记录与翻页边界。331 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 数据库 · 权限管理 · 故障排查 · 账号安全 · 账号锁定 MySQL 8.4 FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME ACCOUNT UNLOCK
MySQL 8.4 账号因为连续输错密码被临时锁定时,不能只看一条 Access denied。本文用 SHOW CREATE USER、Locked_connects 和失败登录记录区分锁定原因,并给出安全解锁、策略修正与复查步骤。494 收藏 -
MySQL 生产表在线加索引时,真正需要盯住的是 DDL 算法、元数据锁和回滚条件。本文用一套可执行的检查流程,说明如何先判断可用算法,再观察阻塞与进度,最后用低风险方式完成变更。230 收藏