Go语言技术文章
-
MySQL 在线 DDL 不等于完全无锁。本文从 INSTANT、INPLACE、COPY 和 LOCK 选项入手,说明如何判断写入是否会被阻塞,并用 SHOW FULL PROCESSLIST 与 Performance Schema metadata_locks 定位长事务和元数据锁等待。439 收藏 -
解释 redo log 与 binlog 刷盘参数的职责及双 1 配合方式,区分写入和持久化、提交组与事务数,说明性能取舍、故障恢复和客户端确认的不同边界。365 收藏 -
MySQL PARTITION BY HASH 通过 MOD(expr, num) 选择分区,并不保证每个分区行数相等。本文从低基数、热点值、表达式压缩和 NULL 集中四个角度解释数据偏斜,再用分区元数据与一致的分桶查询定位原因,给出换键、调整表达式和改分区类型的决策方法。209 收藏 -
介绍 MySQL 中用 generated column 提取 JSON 标量字段并建立索引的方法,说明 JSON_UNQUOTE、JSON_VALUE、virtual/stored 选择、表达式匹配和更新成本。261 收藏 -
以一条只读查询为例,解释 MySQL EXPLAIN ANALYZE 输出中 actual time 两个数分别代表什么,如何结合父子迭代器、rows 和 loops 判断真正耗时阶段。130 收藏 -
数据库 · MySQL | 12小时前 | 执行计划 · MySQL性能 · 查询优化 · 统计信息 · mysql explain 直方图 过滤条件 Histogram COLUMN_STATISTICS 优化器统计
MySQL 直方图不是索引,而是描述非索引列值分布的统计信息。本文从 ANALYZE TABLE、COLUMN_STATISTICS 和 EXPLAIN 三个入口说明如何生成、查看和维护直方图,并解释采样、过期与 AUTO UPDATE 的边界。262 收藏 -
MySQL 的 INVISIBLE 只让优化器暂时不选索引,索引仍会维护且可改回 VISIBLE;DROP INDEX 才会移除结构。本文按盘点、灰度、执行计划、回滚和删除前检查说明两种运维动作的边界。376 收藏 -
解释 utf8mb4 编码与 collation 比较规则的区别,用临时表比较大小写、重音和尾空格语义,说明规则变化对排序、唯一索引以及分页游标的迁移影响。352 收藏 -
MySQL JSON_TABLE 使用 NESTED PATH 展开 JSON 数组时,子路径没有匹配不会直接丢掉父行,而是生成 NULL 补行。本文用原创 SQL 示例说明父行保留、FOR ORDINALITY 追踪和 WHERE 过滤的区别。170 收藏 -
MySQL recursive CTE 的深度由递归终止条件和 cte_max_recursion_depth 共同约束。本文从递归层数错误出发,说明如何用 SESSION 级参数调整预算、保留业务终止条件,并用 max_execution_time 保护慢递归查询。308 收藏 -
根据固定行数与保留并列两种查询需求选择 MySQL ROW_NUMBER 或 RANK,解释唯一键、窗口排序与展示排序的区别,用完整 CTE 示例比较筛选后的结果行数。194 收藏 -
MySQL JSON_LENGTH 对数组返回元素数,对对象返回成员数,对标量返回 1;本文进一步说明路径参数、嵌套结构、NULL 和无匹配路径的处理方式。234 收藏 -
Redis Pub/Sub 重连只恢复后续接收,离线消息不会补发。本文给出快照恢复和 Streams 游标回放两种处理方案,并说明业务去重、双写窗口与历史保留限制。399 收藏 -
Redis JSONPath 遇到数组通配符时,JSON.GET 返回的是匹配节点集合,嵌套数组层级也会保留。本文用具体文档说明 $ 路径、legacy path、空结果和应用层输出契约的边界。472 收藏 -
Redis TTL 只读取剩余过期时间,PERSIST 则移除已有 timeout,二者不是同一种续期动作。本文用缓存键的三种状态、EXPIRE 的条件参数和 PERSIST 的返回值,整理缓存续期与临时取消过期的选择边界。169 收藏