MySQL技术文章
-
本文从连接、字段和转换三个层面说明 MySQL 会话时区如何统一,比较 TIMESTAMP 与 DATETIME 的语义,并给出 SET time_zone、CONVERT_TZ() 和连接池检查点的落地方法。170 收藏 -
围绕 MySQL DECIMAL 的字段位数、小数位、SUM/AVG 聚合和 ROUND 舍入位置,给出避免精度损失的设计方法与边界速查。256 收藏 -
MySQL 的 SAVEPOINT 可以把一次事务切成可回退的局部边界。本文用一个 InnoDB 订单场景说明如何保留前置写入、撤销保存点后的可选写入,并在 ROLLBACK TO SAVEPOINT 后继续提交。281 收藏 -
MySQL SKIP LOCKED 适合多个消费者从 InnoDB 任务表中批量抢占任务,但它只是不等待并排除已锁行,不能自动保证只执行一次。本文说明短事务领取、稳定排序、租约回收、重试和不适用场景。391 收藏 -
从 INFORMATION_SCHEMA.ROUTINES 读取 MySQL 存储过程的 DEFINER 与 SECURITY_TYPE,区分账号不存在、对象权限不足和调用方缺少 EXECUTE,再按身份生命周期选择补齐原账号、用专用定义者重建或改用 INVOKER。262 收藏 -
MySQL 递归 CTE 不应只靠 cte_max_recursion_depth 控制业务层级:先用 depth 条件正确结束递归,再用会话级参数设置安全上限,并说明全局参数与执行时间限制的边界。152 收藏 -
MySQL CTE 不一定会先生成临时结果。本文用一份可执行判断清单区分合并与物化,结合 EXPLAIN、MERGE/NO_MERGE 提示和 optimizer_switch,说明如何做局部实验、保留回滚路径并记录最终选择。441 收藏 -
本文围绕 MySQL EXPLAIN FORMAT=JSON,说明如何结合 key、used_key_parts、used_columns 和 rows_examined_per_scan 判断二级索引命中后是否需要回表,并给出覆盖索引与联合索引的取舍边界。403 收藏 -
用 MySQL 隐形索引验证二级索引下线风险,包含切换、会话级灰度、观察指标与快速回滚步骤。382 收藏 -
用 MySQL 窗口函数在指定时间范围内取每组最近的完整记录:先用半开区间过滤候选集,再用 ROW_NUMBER 稳定排名;同时说明 RANGE 与 ROWS 的时间窗口边界。230 收藏 -
MySQL 存储过程中要读取刚刚执行的 UPDATE、INSERT 或 DELETE 影响行数,应在 DML 后立即使用 GET DIAGNOSTICS 变量 = ROW_COUNT 保存结果。本文说明诊断区、ROW_COUNT()、分支判断和常见边界。227 收藏 -
MySQL 的 READ COMMITTED 与 REPEATABLE READ 不是谁更高级的问题,而是普通一致性读要及时看到新提交,还是在同一事务内保持稳定视图。本文用两会话时间线和选择清单说明差异。332 收藏 -
MySQL 直方图主要用于补充列值分布,帮助优化器估计常量比较的选择性。本文从无索引列、数据偏斜、索引优先级和统计新鲜度几个边界说明何时值得使用,并给出创建、查看和清理直方图的 SQL。151 收藏 -
通过 INFORMATION_SCHEMA.SCHEMATA 查询数据库默认字符集和默认排序规则,重点看 SCHEMA_NAME、DEFAULT_CHARACTER_SET_NAME 与 DEFAULT_COLLATION_NAME,并区分数据库级默认值和表列级显式定义。356 收藏 -
MySQL 联合索引可以把不同列的 ASC 与 DESC 方向写进索引定义。本文用 InnoDB BTREE、WHERE 等值条件和 EXPLAIN 说明怎样设计混合排序索引,并区分正向扫描、反向扫描与 Using filesort。459 收藏