Go语言技术文章
-
澄清多表UPDATE目标行只更新一次的规则,给出按完整业务键聚合和确定性选择最新记录的SQL,区分来源冲突、任务重试与并发封批问题。342 收藏 -
MySQL 的 utf8mb4 只决定字符如何编码,大小写是否视为相等由排序规则 collation 决定。本文用 _ci、_cs、_bin、_ai、_as 后缀拆解选择逻辑,再说明默认规则、列级定义、查询级 COLLATE、唯一索引和 PAD 属性的边界。232 收藏 -
MySQL 分区表是否真的减少了扫描范围,不能只看查询能否返回结果,而要看 EXPLAIN 的 partitions 列。本文用 RANGE 分区示例说明如何对照分区定义、WHERE 条件和执行计划,区分命中一个分区、命中多个目标分区与没有发生分区裁剪。347 收藏 -
MySQL 存储过程需要把参数校验失败和底层异常清楚地交给调用方时,可以用 SIGNAL 设置 SQLSTATE、MESSAGE_TEXT 与 MYSQL_ERRNO。本文从最小示例、handler、诊断区和排查边界说明怎样建立稳定的错误契约。347 收藏 -
数据库 · MySQL | 2星期前 | MySQL · JSON · 数据库 · 查询优化 · mysql 索引 explain JSON json_extract 生成列 JSON_VALUE JSON_UNQUOTE
MySQL 的 JSON 列不能直接按普通列方式建立索引。本文以订单扩展属性为例,把稳定的 JSON 路径提取为有明确类型的生成列,再建立二级索引,并用 EXPLAIN 判断表达式、结果类型和实际索引选择是否匹配。475 收藏 -
MySQL GROUP_CONCAT 结果突然变短时,先检查 group_concat_max_len,再按字节估算选择 SESSION、GLOBAL 或单条语句设置,并同时留意 max_allowed_packet、排序、分隔符和 NULL 行为。443 收藏 -
用 MySQL sys.schema_index_statistics 按读取延迟和读取行数定位高开销索引,解释字段含义、排序方法、写入影响以及 Performance Schema 统计边界。372 收藏 -
MySQL 索引条件下推是否生效,不能只看查询用了索引。本文用 EXPLAIN 的 Extra、EXPLAIN ANALYZE 的 TREE 输出和 optimizer_switch,说明如何确认 Using index condition,并排查没有出现它的常见原因。188 收藏 -
MySQL JSON_TABLE 展开嵌套文档时,关键是把根数组、相对 NESTED PATH、缺失子数组和 FOR ORDINALITY 分开处理。本文用一份多层 JSON 说明如何稳定展开并避免行数误判。165 收藏 -
Redis 事务里的 QUEUED、EXECABORT、EXEC 返回数组和 WATCH 空回复分别代表什么?本文把命令入队、执行报错、事务取消与列表/Streams 工作队列拆开说明,帮助你准确定位错误边界。431 收藏 -
Redis 8.0.0 及以上可用 HGETEX 在读取 Hash 字段的同时更新过期时间。本文说明 EX、PX、EXAT、PXAT、PERSIST 和 FIELDS 的组合方式,并用 HTTL 区分字段仍在、无 TTL 与已经过期。357 收藏 -
Redis volatile 只淘汰带 TTL 的键,allkeys 把所有键纳入候选。本文从数据可重建性、TTL 约定和内存压力出发,给出策略选择表、配置示例及业务观测要点。464 收藏 -
Redis 的 EXPIRE 默认会覆盖当前 TTL。只想首次设置过期时间时使用 NX;只处理已经有 TTL 的键使用 XX;只允许缩短或延长时分别使用 LT、GT。若同时覆盖字符串值,还要用 SET 的 KEEPTTL 保留原有 TTL。217 收藏 -
Redis WATCH 事务竞争失败时,正确做法不是盲目重发,而是重新读取最新值后有限重试。本文用 Go go-redis/v9 拆解竞争窗口、TxFailedErr、退避和错误边界。143 收藏 -
Redis Stream 可以挂载多个独立 consumer group。本文用 XGROUP CREATE、XGROUP SETID、XREADGROUP、XINFO 和 XPENDING 说明如何让不同消费组分别从历史位置回放事件,并避开 PEL 混淆。442 收藏