MySQL技术文章
-
把老表切到 utf8mb4 后,VARCHAR(255) 的唯一索引可能突然报索引长度超限。本文从 4 字节字符、3072 字节上限和排序规则出发,比较缩短字段、前缀索引、哈希辅助列三种方案,说明如何在不牺牲唯一性判断的前提下完成迁移。499 收藏 -
订单创建时先预占库存,用户超时未支付就需要自动释放。本文用 MySQL 8.0 的事件调度器搭一个小型回收任务,围绕 stock_reservations 表说明状态条件、批量边界、索引和锁的关系,并用可重复的 SQL 验收回收结果。492 收藏 -
账号表用了软删除后,旧用户数据需要保留,新用户却可能再次使用同一邮箱。本文从真实注册冲突现场出发,说明复合唯一索引为何失效,以及如何用生成列把活跃账号约束、删除留档和恢复校验收进一条稳定的数据链路。471 收藏 -
订单导入或重试后出现重复记录时,不要直接 DELETE。本文用 MySQL 8.0 的 ROW_NUMBER() 按业务键分组、按时间保留最新行,先用 SELECT 检查待删数据,再用临时表和主键完成可回滚的清理。471 收藏 -
数据库 · MySQL | 3星期前 | 并发 · MySQL · InnoDB · update · 库存扣减 · innodb MySQL 库存扣减 条件 UPDATE 防超卖 affected rows
用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏 -
重复点击、网络重试和消息重复投递都会让写入接口面对同一业务请求多次到达。本文说明如何用幂等键和唯一索引建立数据库边界,并比较重复时返回既有结果与更新既有记录的取舍。421 收藏 -
数据库 · MySQL | 2星期前 | MySQL · 查询优化 · 统计信息 · 性能排查 · 执行计划 EXPLAIN ANALYZE MySQL 8.0 直方图统计 ANALYZE TABLE
当 MySQL 对低基数或倾斜数据估算失准时,直方图统计可以补充普通索引统计。本文用订单状态筛选案例建立基线,说明如何生成、检查、验证和撤销直方图,并划清它不能替代索引的边界。420 收藏 -
数据库 · MySQL | 2星期前 | MySQL · 权限管理 · 备份 · mysqldump · 数据库安全 · 最小权限 mysqldump备份账号 MySQL角色 partial_revokes 备份权限
给线上备份任务单独建角色,先用数据库级权限限制范围,再用 partial_revokes 阻断 mysql 系统库访问,最后通过 SHOW GRANTS 和只读验证确认边界。本文用 orders_app 与 audit_db 两个库演示权限收紧、审计检查和回退方法。413 收藏 -
MySQL 8.0 的不可见索引可以让优化器暂时忽略旧索引,却保留快速恢复能力。本文用 orders 表演示灰度验证、执行计划对比、回滚和最终删除前检查。401 收藏 -
数据库 · MySQL | 1天前 | MySQL · sql优化 · EXPLAIN ANALYZE · 性能验证 · 数据库排查 · mysql 执行计划 EXPLAIN ANALYZE 实际耗时 慢查询排查
MySQL 的 EXPLAIN 只估算执行计划,EXPLAIN ANALYZE 会真正运行语句并给出实际行数与耗时,因此测试时看起来更慢。本文用订单列表查询拆开两者的差异,说明如何读 actual time、如何避免把诊断开销误当业务耗时,并给出可回滚的线上验证边界。399 收藏 -
复合索引不一定必须从第一列开始过滤。本文用订单明细查询说明 MySQL 8.4 Skip Scan 如何跳过索引前缀、什么条件下能被优化器选中,以及如何用 EXPLAIN、统计信息和会话级开关验收,避免把一次命中误判成长期方案。394 收藏 -
一次报表临时表误清空事故,带你看清 MySQL 中 TRUNCATE TABLE 的隐式提交边界、为什么 ROLLBACK 救不回来,以及线上清理表数据时怎样保留可回退窗口。382 收藏 -
数据库 · MySQL | 2星期前 | MySQL · JSON · 索引 · 数据库 · 查询优化 · 生成列 · json_extract 索引优化 列表筛选 生成列 MySQL JSON JSON索引
订单列表把渠道、会员等级放进 JSON 后,筛选条件容易变成逐行计算。本文用 MySQL 生成列和索引把 JSON 路径变成可核对的查询字段,同时处理缺失键、空字符串、类型转换和写入成本。351 收藏 -
后台订单按日期筛选时,查询慢不一定是索引没建好。本文用 order_created_at 的范围条件对比 DATE() 函数、BETWEEN 和半开区间,并通过 EXPLAIN 核对访问类型、扫描行数与结果边界。334 收藏 -
LOAD DATA LOCAL INFILE 能快速导入客户端文件,但权限边界由客户端和 MySQL 服务端共同决定。本文用一个最小导入场景说明 local_infile、--local-infile=0、--load-data-local-dir 的关系,并给出可回查、可回退的安全配置。312 收藏