Go语言技术文章
-
MySQL 递归 CTE 的安全做法不是盲目调大上限,而是先写清终止条件,再按单次查询设置 cte_max_recursion_depth,并用执行时间、行数和结果边界复查。191 收藏 -
Redis Stream 保留消息时,MAXLEN 适合固定条数窗口,MINID 适合按时间或事件 ID 淘汰。本文比较近似与精确裁剪,并给出复查与消费组判断清单。385 收藏 -
用 MySQL JSON_SCHEMA_VALID 配合 CHECK 约束,在 JSON 入库前拒绝缺字段、类型不符和数值越界,并用验证报告定位具体失败位置。446 收藏 -
Redis XCLAIM 的 min-idle-time 是消息可被接管的毫秒门槛,本文结合 XPENDING、IDLE、JUSTID 和 XACK 说明如何判断重试条件与验证接管结果。250 收藏 -
MySQL 的 IS NULL 可以参与索引范围,但复合索引顺序不能靠 WHERE 条件位置判断。本文用租户与软删除示例说明左前缀、索引选择和 EXPLAIN 复查方法。107 收藏 -
XREAD 可以一次读取多个 Redis Stream,但每条流都要配一个独立 ID。本文用订单和支付流说明 0-0、$、COUNT、BLOCK 的用法,以及如何在应用层维护游标并整理跨流结果。205 收藏 -
用 MySQL 8.4 EXPLAIN ANALYZE 对齐 rows、actual rows 和 loops,判断估算偏差、统计信息与慢查询热点。181 收藏 -
Redis SCAN 即使带了 MATCH 和 COUNT,也可能在一次完整迭代中返回重复键。原因是 SCAN 只保存游标,MATCH 负责过滤,COUNT 只是工作量提示;应用侧应使用幂等操作或按需去重,并检查遍历期间的数据变化。305 收藏 -
判断 MySQL 列选择性是否真的变差,不能只看直方图;应结合实际过滤比例、EXPLAIN ANALYZE 的估算与实际行数,以及索引 CARDINALITY 和统计更新时间综合确认。432 收藏 -
Redis Cluster 中,普通 Pub/Sub 适合全局广播,shard channels 适合按槽位限制传播范围。本文用命令、槽位和可靠性边界说明两者如何选。311 收藏 -
sys.schema_unused_indexes 只能说明当前统计周期没有记录到索引事件,不能直接等同于业务永远不使用。本文给出从观察周期、业务 SQL、执行计划到 invisible index 灰度验证的安全删除流程。327 收藏 -
Redis CLIENT NO-EVICT ON 只保护当前连接,使它在启用 maxmemory-clients 后不进入客户端淘汰候选。本文区分客户端淘汰与键淘汰,说明同连接初始化、阈值配置和输出缓冲区边界。411 收藏 -
用 performance_schema.events_statements_summary_by_digest 按语句模式聚合慢 SQL,区分总耗时、平均耗时、扫描量与 digest 容量边界。284 收藏 -
Redis LATENCY DOCTOR 只分析实例内部延迟事件,业务接口耗时还包含网络、连接池、序列化和下游调用。本文用 LATEST、HISTORY、慢日志与应用指标对齐排查,并说明 LATENCY RESET 的证据风险。363 收藏 -
MySQL 使用 REGEXP_SUBSTR 匹配带前缀文本时,返回的是完整命中而不是括号捕获组。本文解释返回边界,并用 REGEXP_REPLACE 回溯引用提取目标字段。199 收藏