谷歌广告投放教程,推广优化公司网站,电商平台网址,网站建站和项目部署一样吗文章目录 Pre1. 加索引#xff1a;最低成本#xff0c;最大收益常见问题#xff1a;工具命令#xff1a;建议#xff1a; 2. SQL 优化#xff1a;比加索引再进阶一步常见 5 类问题#xff1a;实用建议#xff1a; 3. 远程调用#xff1a;从串行改并行#xff0c;性能… 文章目录 Pre1. 加索引最低成本最大收益常见问题工具命令建议 2. SQL 优化比加索引再进阶一步常见 5 类问题实用建议 3. 远程调用从串行改并行性能翻倍不止场景复现优化并行调用建议 4. 数据异构跨服务请求太慢同步一份缺点 5. 避免重复调用案例 1循环查数据库优化写法 案例 2死循环自旋 6. 异步处理什么情况适合异步推荐工具注意 7. 锁粒度控制避免全表级锁优化方式 8. 分页优化大偏移问题推荐 9. 加缓存请求再多读缓存照样稳场景推荐策略注意 10. 分库分表适用场景常见方案注意 11. 辅助功能控制接口不是万金油总结性能优化是一门系统工程 Pre
性能优化 - 理论篇常见指标及切入点
性能优化 - 理论篇性能优化的七类技术手段
性能优化 - 理论篇CPU、内存、I/O诊断手段
性能优化 - 工具篇常用的性能测试工具
性能优化 - 工具篇基准测试 JMH
性能优化 - 案例篇缓冲区
性能优化 - 案例篇缓存
性能优化 - 案例篇数据一致性
性能优化 - 案例篇池化对象_Commons Pool 2.0通用对象池框架
性能优化 - 案例篇大对象的优化
性能优化 - 案例篇使用设计模式优化性能
性能优化 - 案例篇并行计算
性能优化 - 案例篇多线程锁的优化
性能优化 - 案例篇CAS、乐观锁、分布式锁和无锁
性能优化 - 案例篇 详解 BIO NIO AIO
性能优化 - 案例篇 19 条常见的 Java 代码优化法则
性能优化 - 案例篇JVM垃圾回收器
性能优化 - 案例篇JIT 性能优化不是一蹴而就的它是一次“认知 实践”的双向奔赴。 你是不是也遇到过这样的场景
某核心接口TPS每秒事务数一上来就拉垮一个无害的查询突然把数据库搞宕了接口明明逻辑简单但响应就是卡成 PPT。
接下来我将总结出的 11 条接口性能优化法则其中不少优化点只需几行代码就能把接口响应从 几秒 → 毫秒。 1. 加索引最低成本最大收益
有没有用索引用了索引有没有生效MySQL 选对了索引吗
这三个问题必须要会回答。
常见问题
WHERE 条件没加索引ORDER BY 字段无索引或顺序不匹配字段上存在函数、类型不一致导致索引失效多个索引冲突MySQL 选错了路径。
工具命令
SHOW INDEX FROM table_name;
EXPLAIN SELECT * FROM table_name WHERE cloumn 1;建议
别忘了联合索引的最左前缀原则必要时用 FORCE INDEX注意添加、删除索引都要评估业务负载避免高峰期操作。 2. SQL 优化比加索引再进阶一步
索引优化完了执行慢那就看 SQL 本身。
常见 5 类问题
SELECT *无脑全查IN 太长或嵌套子查询关联字段未加索引过多 JOIN 复杂嵌套分页偏移过大OFFSET
实用建议
明确列名不要 SELECT *拆子查询用临时表换 IN使用 LIMIT 时避免大偏移“延迟分页”COUNT(*) 太大可用缓存兜底。 3. 远程调用从串行改并行性能翻倍不止
场景复现
某接口需要
用户服务昵称、头像、等级积分服务积分成长值服务成长值
如果这样写
A → 用户服务200ms
A → 积分服务150ms
A → 成长值服务180ms
总耗时530ms优化并行调用
CompletableFuture.allOf(userFuture, bonusFuture, growthFuture
).join();三路并发总耗时 最长的一次约 200ms。
建议
使用自定义线程池避免高并发下线程爆炸注意业务合并时机和异常兜底。 4. 数据异构跨服务请求太慢同步一份
高并发接口建议使用缓存异构数据减少远程依赖。
用户信息 Redis 缓存结构
{userId: 123,nickname: Artisan,score: 87,growth: 42
}更新策略 数据变更后同步更新 Redis可选异步 MQ 通知或双写机制。
缺点
一致性需关注数据过期和失效策略要设计清晰。 5. 避免重复调用
案例 1循环查数据库
// 低效写法
for (User u : list) {userMapper.getUserById(u.getId());
}优化写法
ListLong ids list.stream().map(User::getId).collect(toList());
userMapper.getUserByIds(ids);减少 N 次 DB 请求 → 只要 1 次。
案例 2死循环自旋
while (true) {if (flag) break;
}慎用在并发条件不明的场景下容易让 CPU 打满推荐用 LockSupport.park() 或 CountDownLatch 等并发工具类。 6. 异步处理
什么情况适合异步
写操作完成后通知其他服务接口响应不需要等待的操作。
推荐工具
AsyncCompletableFuture消息队列RocketMQ/Kafka
注意
异步任务一定要兜底失败重试、幂等保障核心链路要保障同步结果不建议异步。 7. 锁粒度控制避免全表级锁
比如订单取消逻辑
synchronized(lock) {cancelOrder();
}这种是“粗粒度锁”。
优化方式
基于订单号加锁细粒度Redis 分布式锁Redisson乐观锁加版本号 version 8. 分页优化
分页是最常见的接口之一但最容易踩坑。
大偏移问题
SELECT * FROM order LIMIT 100000, 20;扫描 10w 行慢得要命
推荐
延迟分页记录上次最大 id游标分页基于上次的主键分页
SELECT * FROM order WHERE id lastId ORDER BY id LIMIT 20;9. 加缓存请求再多读缓存照样稳
场景
热门xx详情用户画像、配置数据访问频率高但更新低的数据
推荐策略
Redis String/Hash结合 Guava Cache 做本地一级缓存使用 CacheAside 模式先查缓存 → 缓存失效再查库
注意
缓存过期 主动刷新防止缓存雪崩/穿透/击穿布隆过滤器 限流。 10. 分库分表
适用场景
单表数据超千万读写压力过大。
常见方案
垂直拆分按业务分库水平拆分按 ID 取模、按时间分表中间件ShardingSphere、MyCat
注意
JOIN 语句需要格外处理跨分片分页/排序要小心。 11. 辅助功能控制接口不是万金油
很多接口包含了不必要的逻辑尤其是在企业后台管理系统中
复杂日志打印权限、数据范围过滤多租户、国际化处理无用字段/参数传递。
建议
精简接口核心功能优先返回将辅助功能放到独立服务或中间件用 AOP 过滤器统一处理非业务逻辑。 总结性能优化是一门系统工程
接口优化不是追求“代码完美”而是要用尽可能少的改动达到可接受的性能表现。
提到的这 11 点优化手段从数据库 → 接口逻辑 → 缓存中间件 → 分布式架构全面覆盖几乎涵盖了主流系统中所有性能问题的“对症下药”。