MySQL技术文章
-
数据库 · MySQL | 1天前 | 并发 · MySQL · InnoDB · update · 库存扣减 · innodb MySQL 库存扣减 条件 UPDATE 防超卖 affected rows
用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏 -
重复点击、网络重试和消息重复投递都会让写入接口面对同一业务请求多次到达。本文说明如何用幂等键和唯一索引建立数据库边界,并比较重复时返回既有结果与更新既有记录的取舍。421 收藏 -
MySQL 查询不走索引,常见原因不是索引不存在,而是 SQL 写法让优化器难以利用索引。函数包列、隐式类型转换、范围过宽和联合索引顺序不匹配,都应该用 EXPLAIN 验证后再改写。189 收藏 -
报表系统不要直接拿高权限账号连生产库。更稳的做法是用视图收敛字段,通过专用只读账号授予 SELECT,再用 SHOW GRANTS 和审计日志复查权限边界。412 收藏 -
MySQL 里用 ORDER BY RAND() 做随机推荐,小表还能凑合,大表高并发下容易触发全表排序、临时表放大和 CPU 飙升。更稳的做法是先缩小候选集合,再用候选 ID 池、随机键或业务侧抽样把查询控制在索引范围内。378 收藏 -
MySQL 读写分离不是简单把 SELECT 丢到从库。它适合读多写少、查询压力明显大于写入压力的业务,但会带来复制延迟、读己之写、路由规则和故障切换问题。上线前要先确认读写比例、数据一致性要求和回主策略。334 收藏 -
MySQL 多租户订单表变慢时,先用 tenant_id 领头的联合索引稳住常见查询;当热点租户持续拉高 rows、慢日志和队列等待,再考虑租户路由、冷热分流或独立分片。259 收藏 -
本文用删除冗余索引的场景讲清 MySQL 不可见索引:它让优化器先忽略索引,用 EXPLAIN、慢查询和业务指标观察影响,再决定恢复可见或真正删除。468 收藏 -
数据库 · MySQL | 2星期前 | MySQL · InnoDB · 性能排查 · 故障复盘 · 长事务 · mysql PURGE 长事务 Undo history list length 写入延迟
复盘一次 MySQL 写入延迟突然升高的问题:从影响面和时间线入手,通过 innodb_trx、history list length 和 purge 状态定位长事务拖住 undo 清理,并给出修复和防复发清单。242 收藏 -
本文从零构建一个 MySQL 审计日志小项目:用订单表、审计表和触发器记录状态变更,演示本地运行、按订单查询、索引设计和过期清理。486 收藏 -
数据库 · MySQL | 2星期前 | MySQL · 磁盘空间 · 故障复盘 · 临时表 · 报表优化 · mysql 临时表 Created_tmp_disk_tables 磁盘打满 报表接口 故障复盘
本文用一次报表接口超时故障复盘说明 MySQL 临时表打满磁盘的排查过程:从影响面、时间线、触发 SQL、根因定位到临时止血和防复发措施。114 收藏 -
本文按数据生命周期说明 MySQL 消息已读表设计:消息如何产生,已读记录如何去重写入,未读数如何查询,重复点击和并发如何处理,以及历史数据如何清理。243 收藏 -
本文从大促库存扣减的热点行争用出发,分析单行库存模型的锁等待瓶颈,演进到分桶库存、汇总校验和灰度上线方案,并说明取舍与验证指标。141 收藏 -
通过一个可复现的小实验,从订单列表慢查询开始,初始化表和数据,添加复合索引,再用 EXPLAIN 检查 Using index,理解覆盖索引的适用边界。276 收藏 -
从业务负载、约束条件、成本和可靠性出发,对比 MySQL 单库、读写分离、分库分表和云 RDS 多可用区方案,给出可落地的选型清单。472 收藏