MySQL技术文章
-
讲解 MySQL 列直方图随数据分布变化失真后如何检查 COLUMN_STATISTICS,并用 ANALYZE TABLE UPDATE HISTOGRAM 重新采样,兼顾桶数、MySQL 8.4 自动更新和 EXPLAIN 验收。441 收藏 -
MySQL CTE 不一定会先生成临时结果。本文用一份可执行判断清单区分合并与物化,结合 EXPLAIN、MERGE/NO_MERGE 提示和 optimizer_switch,说明如何做局部实验、保留回滚路径并记录最终选择。441 收藏 -
开启 ONLY_FULL_GROUP_BY 后,查询中的非聚合列必须出现在 GROUP BY 中,或能由分组列唯一确定。本文用主键、唯一键、单值过滤、ANY_VALUE 和派生表几个场景,说明如何改写查询并保持结果语义明确。440 收藏 -
MySQL JSON_EXTRACT 返回 JSON 字符串,展示文本可用 JSON_UNQUOTE 或列的 ->> 写法。本文比较返回契约,给出原创只读查询,区分路径缺失、JSON null 与字符串 null,并说明序列化边界。440 收藏 -
数据库 · MySQL | 1个月前 | mysql事务 · InnoDB · mysql READ ONLY transaction_read_only 只读事务 START TRANSACTION
报表连接可以用 READ ONLY 把事务访问模式收紧,写入会被 MySQL 阻断;但它不是账号权限,仍要配合 SELECT 最小权限、正确的连接池作用域和临时表例外处理。439 收藏 -
MySQL 在线 DDL 不等于完全无锁。本文从 INSTANT、INPLACE、COPY 和 LOCK 选项入手,说明如何判断写入是否会被阻塞,并用 SHOW FULL PROCESSLIST 与 Performance Schema metadata_locks 定位长事务和元数据锁等待。439 收藏 -
MySQL 存储过程遇到业务校验失败时,SIGNAL 可以主动抛出可识别错误,RESIGNAL 可以在处理器中保留或补充原始诊断信息。本文用订单额度校验示例说明错误传递、事务回滚和调用方验收的边界。438 收藏 -
递归 CTE 查组织树或日期序列时,结果少一层并不一定是 MySQL 丢数据。本文从锚点、递归成员和终止条件入手,演示如何定位 cte_max_recursion_depth、类型推断与边界条件造成的提前停止。438 收藏 -
Using filesort 只说明 MySQL 需要额外排序,不等于一定要加索引。本文从 EXPLAIN 的 rows、LIMIT、排序字段、索引覆盖和 Sort_merge_passes 入手,给出判断是否需要优化的顺序。438 收藏 -
MySQL 分组取每组第一条时,先用 ROW_NUMBER 按业务字段排序,再用唯一键补足平手顺序,外层筛选 rn=1。本文用订单状态变更记录说明并列值、NULL、索引与执行计划的核对方法。437 收藏 -
MySQL JSON_TABLE 使用 NESTED PATH 展开空数组时,父级记录仍可能保留一行,嵌套列显示为 NULL。本文解释补位行的来源,并用 EXISTS PATH、外层 WHERE 和 ON EMPTY 区分真实明细、空数组与字段缺失。437 收藏 -
MySQL EXPLAIN 中的 rows 是优化器估算,不是实际返回行数。本文用 EXPLAIN ANALYZE、ANALYZE TABLE 和直方图定位偏差来源,并给出复测边界。437 收藏 -
MySQL 窗口函数的 RANGE frame 按 ORDER BY 的值域确定边界,CURRENT ROW 还会包含同值 peers。本文用重复 score 数据对照 RANGE 与 ROWS,解释默认 frame、数值和时间偏移,以及上线前的排查清单。437 收藏 -
解释InnoDB范围保护为何影响索引列更新,给出双会话示例与锁等待关联查询,区分空结果、记录冲突和插入意向等待,并比较事务及隔离策略的代价。436 收藏 -
MySQL 日期查询要想更容易利用索引,关键是让索引列保持原样,用起点和下一边界组成半开区间。本文对比 DATE() 包裹、BETWEEN、按天按月范围、时区参数、联合索引和 EXPLAIN 排查方法。436 收藏