月度记录-2025-10月

36 阅读2分钟

1. maven install

它的核心作用是:编译 → 测试 → 打包 → 安装到本地仓库

也就是说,它不仅构建项目,还会把生成的 .jar 或 .war 文件 放入本地 Maven 仓库,供本机其他项目使用。

当你执行 mvn install,Maven 实际上会从最开始的生命周期依次执行到 install 阶段,流程如下:

阶段

命令

说明

validate

验证项目结构

检查 pom.xml合法性、依赖是否齐全等

compile

编译

编译 src/main/java 下的源码

test

测试

编译并运行 src/test/java下的单元测试

package

打包

打包成 .jar 或 .war(由 pom.xml的 决定)

install

安装

把打包好的产物放到本地仓库中

2. MYSQL表空洞

表空洞”就是 MySQL 表在运行过程中,由于删除、更新、页分裂等操作产生的、暂时或长期无法被有效利用的物理存储空间。

表现就是:表文件越来越大,数据量没变,磁盘占用居高不下,这些就是“空洞”。

成因

  1. 大量删除:删除行只是把行标记为删除,页里留下空槽,需要合并或回收才会被释放到文件系统(尤其是 InnoDB)。
  2. 频繁更新(行变长):变长字段(VARCHAR、TEXT、BLOB)更新时可能导致行移动或页分裂,留下空白页或空槽。
  3. 页分裂与合并不足:B-tree 的页分裂会产生不满的页,短时间内不会自动填满。
  4. MVCC/undo 存活版本:长事务/未提交事务会保留旧版本,阻碍空间回收。
  5. 堆积的二级索引碎片:不仅主键,二级索引也会有碎片。

修复方法:

简单粗暴的(会锁表):OPTIMIZE TABLE your_table;对 MyISAM 是重建索引;对 InnoDB(file-per-table)会重建表并回收空间,期间表会被锁(新版本 MySQL 会尽量做在线重建,但仍有风险)。

在线/无感知的方法(大表推荐):使用一些工具,在线重建表。

3. 外部接口费用治理

费用,应该纳入监控体系。定时看多少钱,属于滞后监控。很容易烧完钱才监控到。

“费用治理”不是财务问题,而是技术监控问题。只要把“外部接口调用”视作“带成本的资源”,像监控 CPU 一样监控它,就能提前发现、提前反应、提前止损。

技术上大致就是Prometheus + Grafana。