MySQL技术文章
-
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏 -
递归 CTE 的安全上限不能只依赖 cte_max_recursion_depth。本文从故障场景出发,拆分业务深度、结果行数和执行时间三种边界,并给出 MySQL 的配置与复查方法。226 收藏 -
给生产中的 InnoDB 大表新增二级索引时,先确认 ALGORITHM=INPLACE 与 LOCK=NONE 的适用边界,再用 metadata_locks、SHOW FULL PROCESSLIST 和索引状态检查锁窗口、失败回退与上线结果。224 收藏 -
针对日期分区查询中 DATE、YEAR 等函数包裹分区键的场景,给出半开区间改写、EXPLAIN 验证、时区边界与不适用条件。224 收藏 -
MySQL 在线备份恢复演练不能只看命令返回成功,还要在隔离实例中核对行数、主键范围、业务聚合值、触发器和存储程序,形成可复盘的恢复证据。222 收藏 -
MySQL 直方图不会因为每次写入自动按固定周期刷新。本文用 COLUMN_STATISTICS 判断数据漂移,比较手动刷新与 AUTO UPDATE,并给出采样率、执行计划和回滚检查清单。222 收藏 -
Retrieved_Gtid_Set 代表副本已经收到的 GTID 集,不等于已经执行。本文用 GTID_SUBTRACT 区分接收缺口与应用积压,给出可复核的复制状态排查方法。221 收藏 -
MySQL 8.4 InnoDB 表空间加密不能只看建表语句:先核对密钥环组件和 ENCRYPTION 状态,再检查 INFORMATION_SCHEMA.INNODB_TABLESPACES,最后用一次受控重启确认恢复链路可用。216 收藏 -
MySQL 备份恢复不能只看备份文件是否存在,还要保存并复核二进制日志文件、起始位置和停止位置。本文给出一套不依赖猜测的检查方法。216 收藏 -
MySQL 在线 DDL 仍可能被元数据锁阻塞。本文用 sys.schema_table_lock_waits 和 performance_schema.metadata_locks 定位持锁事务,并通过 lock_wait_timeout、ALGORITHM 和 LOCK 设定可控的变更失败边界。216 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 错误处理 · 事务 · 存储过程 · 数据库运维 · MySQL存储过程 MySQL GET DIAGNOSTICS SQLSTATE MYSQL_ERRNO 事务异常处理
MySQL 存储过程中的异常处理不能只靠一个通用错误提示。GET DIAGNOSTICS 可以读取 SQLSTATE、MYSQL_ERRNO、MESSAGE_TEXT、NUMBER 和 ROW_COUNT,再把可审计的结果写入日志表;本文用订单入库事务说明诊断区读取、回滚与 RESIGNAL 的边界。215 收藏 -
MySQL 9.4 新增 server_memory 后,默认内存变量会怎样计算?本文用 SHOW VARIABLES 和启动参数拆开它与 temptable_max_ram、innodb_buffer_pool_size 的关系,并说明它为什么不是运行时内存上限。215 收藏 -
MySQL 的 INVISIBLE 列仍然存在,只是不会被 SELECT * 或表别名通配展开。本文用最小示例对比通配查询、显式列名和元数据排查方法,说明如何兼容旧接口并稳定读取隐藏辅助列。213 收藏 -
MySQL 多消费者队列可在短事务中使用 FOR UPDATE SKIP LOCKED 领取互不重叠的任务,再通过租约令牌、超时回收和幂等约束降低重复执行风险。210 收藏 -
MySQL 连接池复用 TCP 连接时,SESSION 变量会随连接一起保留。本文用 time_zone、sql_mode 和 init SQL 说明旧状态从哪里来,给出借出前初始化、归还后清理与复用校验的方法。209 收藏