MySQL技术文章
-
准备删除一个 MySQL 二级索引时,不必先承担回滚风险。MySQL 8.4 可以把索引设为 INVISIBLE,再用 EXPLAIN 和单条查询 hint 对照计划,确认它是否仍被业务查询需要。133 收藏 -
MySQL 分区表并不是加上 PARTITION BY 就能保留所有唯一约束;分区表达式中的列必须进入每一个唯一键,本文用订单表拆开主键、业务唯一键和建表取舍。501 收藏 -
MySQL 用 BINARY(16) 存 UUID 可以减少存储空间,但 UUID_TO_BIN 的 swap_flag 必须和 BIN_TO_UUID 使用同一约定。本文用真实 SQL 输出对比原始顺序、交换时间段和错误还原,说明版本 1 UUID 的适用边界。261 收藏 -
MySQL 8.0 的 INVISIBLE 列可以让新字段先进入表结构,却不改变 SELECT * 的旧返回集。本文用同一张 orders 表演示灰度加列、显式读取和回滚检查。122 收藏 -
MySQL 临时表不会因为事务 COMMIT 自动消失,它绑定创建它的客户端会话;连接池复用时要主动清理,避免旧数据污染下一次请求。110 收藏 -
MySQL 会在派生表合并与物化之间做选择,但包含窗口函数的派生表不能走合并路径。本文用订单排名查询拆开 derived_merge、内部临时表、过滤位置与 EXPLAIN 验证边界。283 收藏 -
一个订单列表翻到很后面后明显变慢,问题通常不只在 LIMIT,而在于数据库仍要跳过大量记录并回表。本文用游标式分页、稳定排序和覆盖索引改造一个列表接口,并用 EXPLAIN 核对执行路径。475 收藏 -
解释 MySQL InnoDB 事务中普通 SELECT 与 SELECT ... FOR UPDATE 的差异,用库存扣减示例说明丢更新风险、锁定读边界和可复核的验证方法。295 收藏 -
给生产中的 InnoDB 大表新增二级索引时,先确认 ALGORITHM=INPLACE 与 LOCK=NONE 的适用边界,再用 metadata_locks、SHOW FULL PROCESSLIST 和索引状态检查锁窗口、失败回退与上线结果。224 收藏 -
MySQL 8.4 复制过滤看似配置正确却漏表时,重点核对 replicate-wild-do-table 的库表模式、语句中是否显式提到目标表、数据库级规则优先级和复制线程实际加载的配置。405 收藏 -
数据库 · MySQL | 1天前 | MySQL · 递归 · SQL查询 · 故障排查 · CTE · WITH RECURSIVE cte_max_recursion_depth MySQL CTE 递归查询 递归成员
递归 CTE 查组织树或日期序列时,结果少一层并不一定是 MySQL 丢数据。本文从锚点、递归成员和终止条件入手,演示如何定位 cte_max_recursion_depth、类型推断与边界条件造成的提前停止。438 收藏 -
MySQL 8.4 可以用 ALTER USER 为单个账户覆盖全局密码策略。本文用 password_history、password_reuse_interval 和 password_require_current 演示如何收敛影响范围,并核对 mysql.user 中的结果。418 收藏 -
用 MySQL 8.4 的 REGEXP_REPLACE 清洗带空格和分隔符的订单编码,核对捕获组替换、NULL 返回值与更新前后的结果,避免把异常数据悄悄改坏。133 收藏 -
MySQL 8.4 InnoDB 表空间加密不能只看建表语句:先核对密钥环组件和 ENCRYPTION 状态,再检查 INFORMATION_SCHEMA.INNODB_TABLESPACES,最后用一次受控重启确认恢复链路可用。216 收藏 -
删除一条订单主表记录时,如果外键触发级联检查,耗时可能来自子表扫描、级联删除和锁等待。本文用 InnoDB 示例拆开索引与锁范围。457 收藏