MySQL
已收录文章:72篇
-
把老表切到 utf8mb4 后,VARCHAR(255) 的唯一索引可能突然报索引长度超限。本文从 4 字节字符、3072 字节上限和排序规则出发,比较缩短字段、前缀索引、哈希辅助列三种方案,说明如何在不牺牲唯一性判断的前提下完成迁移。499 收藏
-
MySQL 索引不是越多越好。本文用 orders 表演示如何先把候选索引设为 INVISIBLE,再结合 EXPLAIN ANALYZE、慢查询和写入开销验证,确认无误后再删除,并保留可回退路径。499 收藏
-
数据库 · MySQL | 2个月前 | MySQL · sql优化 · 数据库运维 · 性能排查 · MySQL 8.4 SET_VAR optimizer hint sort_buffer_size SQL 性能隔离MySQL 8.4 的 SET_VAR 优化器提示可以只为一条 SQL 临时调整可用系统变量。本文用报表排序场景说明语法、作用域、可调整变量、EXPLAIN 验收和回退边界,避免为了单条慢查询修改整个实例。497 收藏
-
数据库 · MySQL | 1个月前 | MySQL · 数据库 · 权限管理 · 故障排查 · 账号安全 · 账号锁定 MySQL 8.4 FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME ACCOUNT UNLOCKMySQL 8.4 账号因为连续输错密码被临时锁定时,不能只看一条 Access denied。本文用 SHOW CREATE USER、Locked_connects 和失败登录记录区分锁定原因,并给出安全解锁、策略修正与复查步骤。494 收藏
-
MySQL 分区表归档不要直接 DROP PARTITION:先用 INFORMATION_SCHEMA.PARTITIONS 核对边界,再用 EXCHANGE PARTITION 把旧数据换到归档表,最后用校验和回滚演练确认没有误删。483 收藏
-
MySQL 事务中遇到一条可恢复的业务错误时,不必立刻回滚全部操作。本文用 SAVEPOINT 演示局部回滚,解释保存点对锁状态的影响,并给出重试与提交前核对边界。482 收藏
-
数据库 · MySQL | 1个月前 | MySQL · 数据库 · 死锁 · InnoDB · 性能排查 · mysql innodb 死锁 事务 LATEST DETECTED DEADLOCK 锁顺序MySQL 发生死锁后,不能只看报错回滚。本文从 SHOW ENGINE INNODB STATUS 的 LATEST DETECTED DEADLOCK 还原事务、锁资源和等待关系,再用相反锁顺序构造最小复现并给出上线前验收清单。480 收藏
-
EXPLAIN 里的 rows 只是优化器估算要扫描的索引记录数,不等于最终访问数据页的成本。本文用订单列表查询拆开回表、覆盖索引和分页取数的关系,并给出可复现的验收方法。475 收藏
-
订单导入或重试后出现重复记录时,不要直接 DELETE。本文用 MySQL 8.0 的 ROW_NUMBER() 按业务键分组、按时间保留最新行,先用 SELECT 检查待删数据,再用临时表和主键完成可回滚的清理。471 收藏
-
MySQL 主从延迟不能只看 Seconds_Behind_Master。本文从复制线程状态、Relay_Log_Pos、Performance Schema 事务等待和大事务四个层次排查,并给出可回退的处理顺序。468 收藏
-
用部门层级和类别树说明 MySQL 8.4 递归 CTE 的停止条件、cte_max_recursion_depth、循环引用检测与路径验收,避免层级查询卡住或重复展开。454 收藏
-
MySQL 遇到 OR 条件时可能选择 Index Merge,但这不代表它一定优于联合索引。本文用订单筛选场景拆开合并扫描、回表、排序与改写边界,给出 EXPLAIN 和 EXPLAIN ANALYZE 的核对方法。451 收藏