Go语言技术文章
-
MySQL GTID 迁移要让备份数据与事务水位对应,不能用补写 GTID 元数据代替恢复。本文用集合比较示例识别缺失事务、已清理历史及额外事务,并解释自动定位与切换放行条件。285 收藏 -
Redis 的写入回复成功,不等于数据已经落到 AOF 或副本磁盘。本文用 WAITAOF 拆开本地 fsync、副本 fsync 和超时返回值,给出订单确认、幂等重试和生产验收的边界。284 收藏 -
数据库 · MySQL | 2个月前 | 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 收藏 -
Redis HSCAN 通过游标逐轮遍历 Hash,MATCH 负责按 glob 模式筛选字段,COUNT 只提供每轮工作量提示。本文用一个增量处理场景拆开三者的配合方式、空批次边界和可恢复写法。282 收藏 -
Redis LFU 用概率计数和按需衰减适应热点变化。本文解释 lfu-decay-time、增长因子与采样的区别,给出配置读取、单参数试验和回退方法,并说明 OBJECT FREQ 与同窗口命中率的观察边界。282 收藏 -
Redis BLMOVE 用一个命令从来源列表弹出元素并压入目标列表,适合把待处理任务转移到处理中队列。本文拆解来源端、目标端、阻塞等待和超时返回,说明怎样避免方向写反和空列表误判。282 收藏 -
最可靠的做法是跳过预查直接INSERT并捕获1062错误,在应用层处理冲突;ON DUPLICATE KEY UPDATE和ON CONFLICT需依赖唯一索引,否则无效。MySQL 直接 INSERT + 捕获 1062 错误最可靠 查再插(SELECT THEN INSERT)在高并发的情况反赌281 收藏 -
旧表字符集迁移不能只改一个默认值。本文以 utf8mb4 为目标,说明如何盘点表列与连接设置、选择排序规则、执行 ALTER TABLE、处理显式列定义并安排迁移后的核对与回滚。281 收藏 -
同一条 MySQL 查询使用预编译参数后可能出现不同执行计划。本文从参数类型、隐式转换、索引可用性和 EXPLAIN 复核入手,给出可回归的排查与改写方法。280 收藏