Go语言技术文章
-
Redis 的写入回复成功,不等于数据已经落到 AOF 或副本磁盘。本文用 WAITAOF 拆开本地 fsync、副本 fsync 和超时返回值,给出订单确认、幂等重试和生产验收的边界。284 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 索引 · 执行计划 · sql优化 · 性能排查 · 执行计划 MySQL 8.4 EXPLAIN FORMAT=JSON cost_info query_cost
MySQL 查询慢时,EXPLAIN 的 rows 只是行数估算,真正影响优化器取舍的还包括 cost_info。本文用订单列表场景拆解 query_cost、read_cost、条件评估成本、prefix_cost 的关系,再用 EXPLAIN ANALYZE 复核估算偏差,避免把 cost 数字直接当成毫秒。284 收藏 -
MySQL InnoDB 改用 READ COMMITTED 后,主要减少非唯一索引范围上的间隙锁与不匹配行的锁保留;普通 SELECT、锁定读、外键检查和重复键检查仍需分开判断。284 收藏 -
MySQL LOAD DATA 导入含换行文本时,要分清字段内的\n转义、CSV 引号包围的真实换行,以及记录本身的行结束符。本文按源文件形态说明 TERMINATED BY、ENCLOSED BY、ESCAPED BY 和 LOCAL 的边界,并给出导入后的核对清单。284 收藏 -
Redis HyperLogLog 近似去重异常时,先按统计窗口检查 key 和 PFADD 输入,再区分 PFCOUNT 单 key、多 key 并集与 PFMERGE 持久合并,最后用 TYPE、TTL 和误差边界判断结果是否可用。284 收藏 -
用 performance_schema.events_statements_summary_by_digest 按语句模式聚合慢 SQL,区分总耗时、平均耗时、扫描量与 digest 容量边界。284 收藏 -
MySQL 会在派生表合并与物化之间做选择,但包含窗口函数的派生表不能走合并路径。本文用订单排名查询拆开 derived_merge、内部临时表、过滤位置与 EXPLAIN 验证边界。283 收藏 -
通过会话级 optimizer_switch 对比 use_invisible_indexes 开关,验证不可见索引是否进入 MySQL 查询计划,并给出恢复设置与上线判断边界。283 收藏 -
最可靠的做法是跳过预查直接INSERT并捕获1062错误,在应用层处理冲突;ON DUPLICATE KEY UPDATE和ON CONFLICT需依赖唯一索引,否则无效。MySQL 直接 INSERT + 捕获 1062 错误最可靠 查再插(SELECT THEN INSERT)在高并发的情况反赌281 收藏 -
旧表字符集迁移不能只改一个默认值。本文以 utf8mb4 为目标,说明如何盘点表列与连接设置、选择排序规则、执行 ALTER TABLE、处理显式列定义并安排迁移后的核对与回滚。281 收藏 -
同一条 MySQL 查询使用预编译参数后可能出现不同执行计划。本文从参数类型、隐式转换、索引可用性和 EXPLAIN 复核入手,给出可回归的排查与改写方法。280 收藏 -
数据库 · Redis | 1个月前 | Redis · 队列 · 并发控制 · 故障排查 · Sorted Set · redis Sorted Set ZPOPMIN ZMPOP 并发消费 业务顺序
Redis ZMPOP 可以从 Sorted Set 原子取出最小分值成员,但批量弹出后的业务顺序、空结果和多消费者并发仍需要单独设计。本文用 redis-cli 拆开 MIN、COUNT、分值返回和单消费者批处理边界。280 收藏 -
数据库 · MySQL | 2个月前 | MySQL · 索引 · limit · explain · sql优化 · mysql order by explain limit 复合索引 filesort
一条只取 20 行的订单查询,EXPLAIN 却可能放弃看似更贴近 WHERE 条件的索引,改走排序索引并在途中筛选。原因是 LIMIT 同时改变了排序、过滤和回表的成本取舍。通过读懂 key、rows 和 Extra,给等值条件与排序字段设计复合索引,再用受控对比核实实际读行,才能避免把 filesort 或某个索引名称当成唯一结论。279 收藏 -
Redis ZSET 分数相同时不会按插入顺序排列,而是继续按 member 的二进制字节序排序。本文用命令示例说明正反向查询,并给出姓名、序号和时间等业务 tie-break 的设计方法。279 收藏 -
Redis 配置 volatile-lru 却没有淘汰键时,先核对运行时策略和 maxmemory,再用 TTL 检查候选键是否真的带过期时间,最后排查覆盖写抹掉 TTL 的问题。279 收藏