Go语言技术文章
-
迁移 MySQL utf8mb4 排序规则前,系统检查字符字段、索引、唯一键、外键、生成列与尾部空格语义,提前发现重复值和兼容性风险。319 收藏 -
MySQL 分区表按时间清理历史数据时,逐行 DELETE 可能带来长事务、undo 增长和锁等待。本文从一次线上删除变慢的现象出发,说明如何确认分区边界、选择 DROP PARTITION,并用复查动作验证空间和业务影响。316 收藏 -
Redis 8.4 新增 MSETEX,可在一次操作中写入多个字符串键并共享过期策略。本文从旧式 MSET 加 EXPIRE 的等待链出发,核对 NX、XX、EX、PX、EXAT、PXAT 和 KEEPTTL 的边界,给出升级前后的验收方法。314 收藏 -
Redis EXPIRE 的 GT 只接受比当前 TTL 更长的新过期时间,LT 只接受更短的时间;结合 TTL 返回值,可以安全实现缓存续期和过期收紧。313 收藏 -
LOAD DATA LOCAL INFILE 能快速导入客户端文件,但权限边界由客户端和 MySQL 服务端共同决定。本文用一个最小导入场景说明 local_infile、--local-infile=0、--load-data-local-dir 的关系,并给出可回查、可回退的安全配置。312 收藏 -
用 performance_schema.data_lock_waits 连接等待锁与持有锁,再回到 data_locks 和线程事件核对对象、事务和处理顺序,避免只看到一个线程就误判。312 收藏 -
使用 MySQL ROW_NUMBER() 按业务键分组、按更新时间倒序取每组最新记录,并处理并列时间、NULL 和索引等常见边界。312 收藏 -
MySQL UPDATE 条件看起来只命中少量数据,却出现大范围锁等待时,按执行计划、data_locks、范围锁和事务边界逐层定位,避免盲目改隔离级别。311 收藏 -
用 Redis Lua 把库存检查、扣减和已售计数放进一次服务端执行,讲清 KEYS、ARGV、Cluster 同槽位以及原子执行不等于异常回滚的边界。311 收藏 -
MySQL 连接池空闲连接被 wait_timeout 或中间网络设备断开后,不要只靠重试。本文从服务端超时、连接池回收、PingContext 和事务安全四个层面给出恢复方案。311 收藏 -
Redis Cluster 中,普通 Pub/Sub 适合全局广播,shard channels 适合按槽位限制传播范围。本文用命令、槽位和可靠性边界说明两者如何选。311 收藏 -
MySQL 分区表建好后查询仍然很慢,往往不是分区失效,而是条件没有触发分区裁剪。本文用按月订单表拆解 EXPLAIN PARTITIONS、范围条件和分区键改写的验证方法。310 收藏 -
说明 Redis 8.10 HIMPORT 如何用连接级 fieldset 复用字段名批量写入 Hash,并梳理固定 schema、值顺序、连接池和清理边界。309 收藏 -
Redis Pub/Sub 断线重连不能补发已丢失消息,但可以保存订阅意图,在新连接建立后按快照恢复频道并用订阅回执确认 ready。本文给出 Go 风格实现思路和 Pub/Sub、Streams 的选型边界。309 收藏 -
数据库 · MySQL | 1个月前 | MySQL · 执行计划 · 索引优化 · 数据库排查 · mysql 不可见索引 Invisible Index optimizer_switch 索引回归
MySQL 的不可见索引适合用来观察“去掉这条索引会怎样”,但它不是删除前的自动回滚按钮。本文以订单查询为例,演示设置不可见、用 optimizer_switch 做单会话影子验证、检查执行计划和恢复可见性的边界。308 收藏