MySQL技术文章
-
MySQL 8.0 的 INVISIBLE 列可以让新字段先进入表结构,却不改变 SELECT * 的旧返回集。本文用同一张 orders 表演示灰度加列、显式读取和回滚检查。122 收藏 -
MySQL sys schema 适合做诊断入口,真正的 InnoDB 表空间容量可从 INFORMATION_SCHEMA.FILES 读取,再用 sys.format_bytes() 输出可读的已用与空闲空间。122 收藏 -
MySQL 直方图用列值分布辅助选择性估算,不等于索引。通过累积频率算例和 SQL,解释 ANALYZE TABLE、采样、rows 与 filtered,以及统计更新的适用边界。122 收藏 -
MySQL 普通 SELECT 后 ROW_COUNT() 返回 -1 是结果集语义,不是查询失败。本文对比 DML、DDL、COUNT(*) 与 SELECT INTO OUTFILE 的行数口径,并给出排查清单。122 收藏 -
从树形执行计划的 Materialize、临时子查询表和自动去重索引节点,判断 MySQL 是否真正采用了子查询物化。121 收藏 -
MySQL 降序索引不是给 ORDER BY DESC 随手加一个关键字就能生效。本文从 InnoDB 联合索引、WHERE 等值条件、混合 ASC/DESC 排序和 EXPLAIN 判断入手,说明怎样减少 filesort,以及哪些场景仍会反向扫描或无法使用降序索引。121 收藏 -
MySQL sys 的 ps_statement_avg_latency_histogram() 会把被 Performance Schema 跟踪的归一化语句按平均延迟分桶。本文解释调用方式、桶宽、字符单位和排障边界,帮助你从分布发现问题并继续定位具体语句。120 收藏 -
MySQL 报 Too many connections 时,不要先盲目调大 max_connections。本文用 Threads_connected、Threads_running、SHOW PROCESSLIST、Connections 和 Threads_created 建立一条可复现的定位顺序,区分连接泄漏、并发峰值与线程创建开销。119 收藏 -
MySQL BIT_COUNT(expr) 用来统计表达式中值为 1 的位数。本文从权限位掩码的排查场景出发,说明数值、二进制字符串和 NULL 的结果差异,并给出可直接放进查询的写法。119 收藏 -
MySQL 函数索引不生效,先对照索引表达式与 WHERE 谓词,再检查复合索引列顺序、覆盖列、回表和 EXPLAIN 计划。118 收藏 -
MySQL invisible index 试验结束后,用 ALTER TABLE ... ALTER INDEX ... VISIBLE 恢复可见,再通过 IS_VISIBLE、SHOW INDEX 和 EXPLAIN 确认对象状态与执行计划。118 收藏 -
MySQL 索引前缀参数对非二进制字符串按字符解释,但上限按字节计算。本文用 utf8mb3、utf8mb4、latin1/ascii 和 InnoDB 行格式对照迁移中的索引长度,给出换算公式、检查命令与修复取舍。118 收藏 -
MySQL STR_TO_DATE 适合解析日期和时间主体,但不要把 +08:00 直接当作 %z。本文用一个带数字时区偏移的字符串,演示如何拆分、解析、用 CONVERT_TZ 转成 UTC,并根据业务需要选择 DATETIME 或 TIMESTAMP。117 收藏 -
从列定义、参数绑定和 EXPLAIN 计划三处排查 MySQL 隐式类型转换,避免字符串列与数字比较导致索引无法高效查找。116 收藏 -
用 MySQL JSON_TYPE 判断对象、数组和基础标量,结合 JSON_EXTRACT、CASE 与 BEFORE 触发器完成查询分流和写入时分类,并说明 SQL NULL、JSON null 与无效 JSON 的边界。116 收藏