- Published on
2025 Weekly Report 9
- Authors
- Name
- Sunway
工作
- 1 sql index enhancement
死去的 mysql 八股攻击了我
收到线上 slow sql 告警,上服务器查看一下,发现了一个 filesort
,弄了个联合索引把它优化了;回表就先不管了,等告警再说
# 虽然 signer 和 block_id 都有单独的普通索引,但因为不是联合索引所以 order by 直接导致 filesort 了
explain SELECT * FROM extrinsic_4 WHERE signer = 'cXjL7Toav4ZCnW3TJEEryKpXasFAiq5VNCUiEkoLed5jPCtGP9' ORDER BY block_id desc LIMIT 40 OFFSET 0;

解决方案:
云上快照备份,cloudflare loadbalance
后端有节点A和B,删除需要变更的节点B,确认A没有流量后,在 shardingsphere
生产环境执行该sql
, 4千万行数据大概5分钟能执行完成;
然后在 cloudflare
把B节点切回来,删除A节点,再到A节点执行该添加索引sql;最后cicd
更新代码把服务端gorm
的索引加上,由于已经手动添加了索引,所以这次变更不会导致线上更新索引导致数据库hang住;
```sql
ALTER TABLE `extrinsic` ADD INDEX `idx_signer_block_id` (`signer`, `block_id` DESC);
得想办法把数据库的技术栈迁移到 postgres
上...
- 2 pvc do not int the same zone
有一种需求,在云上使用默认的CSI存储插件时,当一个 pod 需要挂载多个云硬盘类型的 PVC 有可能这几个 PVC 被创建在不同的 zone,这将导致 pod 无法调度
之前运气好,没注意这个,PVC 刚好创建在同一个 Zone 给我混过去了...
- 3 bad file descriptor
在容器环境中,如果想要日志持久化,可以用 volume 持久化然后 sidecar 容器抓取或者 daemonset 容器抓取,或者干脆存储在 hostPath /app/domain_name/logs/... 之类的
有一种情况,当 deployment rollout restart 时,如果旧的Pod还占用了 pvc 文件系统中某个特定的 log 文件的写锁,则新的pod可能由于无法获取该文件写权限导致无法启动
直接用 time.Now().Unix()
加在日志文件名的后缀中解决
生活
- 1 健身周报:一周4练,周末练腿练过头了,还想多练一组背,结果直接恶心干呕了
- 2 做菜周报:老妈生日,给了点钱,请她和朋友出去吃了一顿,懒得做菜了
- 3 周末2天阳光明媚30度,长沙结束了一个月的阴冷天气,秒变夏天
- 4 持有
#APLD
,#NVDA
财报跌超8个点,相关上下游/概念股直接亏麻 - 5 周末趁着阳光明媚驾车去了
鹅洲岛
,等暮坪大桥
修好了,以后可以经常去晒晒太阳,放松一下(沿江公路上很多骑公路车的人,真惬意) - 6 用了 5 年的工行白金 visa 提额居然失败了,从来没有违约过,只说条件不满足,又不说具体原因
其他
- 看了柴静的采访