MySQL
已收录文章:17篇
-
把老表切到 utf8mb4 后,VARCHAR(255) 的唯一索引可能突然报索引长度超限。本文从 4 字节字符、3072 字节上限和排序规则出发,比较缩短字段、前缀索引、哈希辅助列三种方案,说明如何在不牺牲唯一性判断的前提下完成迁移。499 收藏
-
账号表用了软删除后,旧用户数据需要保留,新用户却可能再次使用同一邮箱。本文从真实注册冲突现场出发,说明复合唯一索引为何失效,以及如何用生成列把活跃账号约束、删除留档和恢复校验收进一条稳定的数据链路。471 收藏
-
订单导入或重试后出现重复记录时,不要直接 DELETE。本文用 MySQL 8.0 的 ROW_NUMBER() 按业务键分组、按时间保留最新行,先用 SELECT 检查待删数据,再用临时表和主键完成可回滚的清理。471 收藏
-
数据库 · MySQL | 3星期前 | 并发 · MySQL · InnoDB · update · 库存扣减 · innodb MySQL 库存扣减 条件 UPDATE 防超卖 affected rows用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏
-
重复点击、网络重试和消息重复投递都会让写入接口面对同一业务请求多次到达。本文说明如何用幂等键和唯一索引建立数据库边界,并比较重复时返回既有结果与更新既有记录的取舍。421 收藏
-
数据库 · MySQL | 1星期前 | 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 中 TRUNCATE TABLE 的隐式提交边界、为什么 ROLLBACK 救不回来,以及线上清理表数据时怎样保留可回退窗口。382 收藏
-
数据库 · MySQL | 2星期前 | MySQL · JSON · 索引 · 数据库 · 查询优化 · 生成列 · json_extract 索引优化 列表筛选 生成列 MySQL JSON JSON索引订单列表把渠道、会员等级放进 JSON 后,筛选条件容易变成逐行计算。本文用 MySQL 生成列和索引把 JSON 路径变成可核对的查询字段,同时处理缺失键、空字符串、类型转换和写入成本。351 收藏
-
后台订单按日期筛选时,查询慢不一定是索引没建好。本文用 order_created_at 的范围条件对比 DATE() 函数、BETWEEN 和半开区间,并通过 EXPLAIN 核对访问类型、扫描行数与结果边界。334 收藏
-
PHP PDO 事务里最容易误判的不是 beginTransaction,而是异常有没有真正离开业务边界、commit 是否只发生一次,以及回滚后调用方是否仍把失败当成功。本文用订单扣库存场景拆开这些边界。329 收藏