MySQL技术文章
-
把老表切到 utf8mb4 后,VARCHAR(255) 的唯一索引可能突然报索引长度超限。本文从 4 字节字符、3072 字节上限和排序规则出发,比较缩短字段、前缀索引、哈希辅助列三种方案,说明如何在不牺牲唯一性判断的前提下完成迁移。499 收藏 -
数据库 · MySQL | 2个月前 | 连接池 · 高并发 · 故障排查 · MySQL教程 · 数据库运维 · mysql 高并发 连接池 max_connections Too many connections
从 MySQL Too many connections 事故入手,讲清 max_connections、Threads_connected、Threads_running、连接池容量预算和上线检查。491 收藏 -
本文从零构建一个 MySQL 审计日志小项目:用订单表、审计表和触发器记录状态变更,演示本地运行、按订单查询、索引设计和过期清理。486 收藏 -
从业务负载、约束条件、成本和可靠性出发,对比 MySQL 单库、读写分离、分库分表和云 RDS 多可用区方案,给出可落地的选型清单。472 收藏 -
账号表用了软删除后,旧用户数据需要保留,新用户却可能再次使用同一邮箱。本文从真实注册冲突现场出发,说明复合唯一索引为何失效,以及如何用生成列把活跃账号约束、删除留档和恢复校验收进一条稳定的数据链路。471 收藏 -
订单导入或重试后出现重复记录时,不要直接 DELETE。本文用 MySQL 8.0 的 ROW_NUMBER() 按业务键分组、按时间保留最新行,先用 SELECT 检查待删数据,再用临时表和主键完成可回滚的清理。471 收藏 -
数据库 · MySQL | 3星期前 | 并发 · MySQL · InnoDB · update · 库存扣减 · innodb MySQL 库存扣减 条件 UPDATE 防超卖 affected rows
用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏 -
本文用删除冗余索引的场景讲清 MySQL 不可见索引:它让优化器先忽略索引,用 EXPLAIN、慢查询和业务指标观察影响,再决定恢复可见或真正删除。468 收藏 -
本文用两个 MySQL 会话复现可重复读和幻读场景,解释快照读、当前读、范围查询和间隙锁的关系,帮助排查线上并发写入问题。455 收藏 -
数据库 · MySQL | 2个月前 | 高并发 · 故障排查 · MySQL教程 · 事务隔离 · InnoDB锁 · mysql innodb 高并发 锁等待 MySQL 8.4 NOWAIT SKIP LOCKED
围绕高并发工单抢占和库存预占,讲清 MySQL 8.x InnoDB locking read 中 NOWAIT、SKIP LOCKED 的适用边界、复现方法、SQL 改写、锁等待诊断和上线检查。439 收藏 -
数据库 · MySQL | 2个月前 | binlog · 故障恢复 · 备份恢复 · MySQL教程 · DBA实战 · mysql DBA binlog 备份恢复 mysqlbinlog MySQL 8.4 PITR
从误删订单数据的恢复演练切入,讲清 MySQL 8.x 完整备份、binlog 保留、mysqlbinlog 按时间点/位置回放、校验与上线检查。432 收藏 -
通过转账场景复现 MySQL InnoDB 死锁,演示如何查看死锁信息、理解反向加锁原因,并用固定加锁顺序、缩短事务和重试机制降低问题概率。429 收藏 -
本文用一套可复用工作流讲清 MySQL 深分页优化:先识别 OFFSET 大扫描,再选择游标翻页、延迟关联和覆盖索引,最后用执行计划和响应耗时验证结果。429 收藏 -
重复点击、网络重试和消息重复投递都会让写入接口面对同一业务请求多次到达。本文说明如何用幂等键和唯一索引建立数据库边界,并比较重复时返回既有结果与更新既有记录的取舍。421 收藏 -
数据库 · MySQL | 1星期前 | MySQL · 查询优化 · 统计信息 · 性能排查 · 执行计划 EXPLAIN ANALYZE MySQL 8.0 直方图统计 ANALYZE TABLE
当 MySQL 对低基数或倾斜数据估算失准时,直方图统计可以补充普通索引统计。本文用订单状态筛选案例建立基线,说明如何生成、检查、验证和撤销直方图,并划清它不能替代索引的边界。420 收藏