最近也在面试,借这个帖子问一下,后端的性能优化大家都做了哪些工作?我日常工作中涉及到性能优化的,主要是涉及到几点
1. 不常修改但是经常性访问的数据用 Redis ,比如一些配置数据、档案数据
2. 一些可并行的任务或者查询尽量用 CompletableFuture
3. 能做批量处理的,尽量批量处理;但是对于一些特别大批量的数据,进行分批次并发处理,最后合并结果( mapreduce ),之前遇到过一次某个大账号单月 200 万条流水信息,导致一次性查询到内存里 OOM 的情况,后来对这方面特别注意

4. 一些数据结构的优化,比如数据库表设计的时候,尽量用能满足当前需求的占用空间最小的数据类型,tinyint 这种
5. JVM 的一些参数调整,比如 G1 的 younggc 会有一些毛刺,大部分回收时间在 20 30ms ,偶尔会有 90ms 的情况,去调整了下 region 的大小和 Rset
6. SQL 查询优化,自己写了个工具,每天定期去拉取监控平台的慢 SQL ,交给大模型分析,分析完成后发个邮件到邮箱
7. 还有就是业务上,有些长事务的场景去做拆分,长事务调整成几段小事务,前一事务处理完成后,新起事务或者通过事件中心去做下一阶段的事务,页面上增加人工补偿机制
目前能想到的就这么点,这些都是我在实际开发中真正去做的,但是面试的时候说这些,面试官好像都不太满意,想问问大家都是怎么做性能优化来支撑高并发业务的
(我几份工作都是面向 B 端用户的,C 端业务没做过,所以也很好奇)