2.5MySQL的优化

1. 添加索引

   

1). 什么时候考虑添加索引?

   

数据量大; 频繁查询;

   

   

2). 针对什么样的字段添加索引?

   

where 后面的条件; 针对数据波动范围大;

   

   

3). 数据库表的索引是否越多越好 ? 太多会有什么影响?

   

不是; 太多了, 会对insert , update 的效率产影响.

   

   

4). 索引的使用规则?

   

explain 指令来查看查询计划.

   

   

   

   

2. select 语句中 尽量不适用 select * from..., 使用具体的字段代替 select name , age from ...;

   

---> select * , * 代表所有的列, 不同的表, 列也不同, 需要解析列, 会查找所有的字段. 效率低.

   

   

3. where 和 having, where子句中不能跟组函数. 当使用where 和 having 都可以使用时, 尽量使用where.

   

1). select deptno, avg(sal) from emp where deptno = 10 group by deptno; ---> 先过滤,后分组, 分组的对象数据少, 效率高.

   

2). select deptno, avg(sal) from emp group by deptno having deptno = 10; ---> 先分组后过滤.

   

4. 如果需要查询多张表, 可以使用子查询, 也可以使用多表查询时, 理论上,尽量使用多表查询 ---> 因为性能高.

   

因为子查询, 对数据操作两次或多次, 而多表查询则只操作一次, 所以效率高---------> 不考虑笛卡尔积的情况下.

   

但是,如果表中的数据太多, 多表产生的笛卡尔积太大, 会影响多表查询的效率.

   

5. 尽量不使用集合运算.

   

参与运算的集合越多, 运行效率越低. UNION(并集) , UNION ALL(全并集) , INTERCEPT(交集) , MINUS(差集)

   

6. 尽量不适用in操作符.

   

ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采

   

用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程

   

在业务密集的SQL当中尽量不采用IN操作符,用 EXISTS 方案代替。

   

7. 强烈不建议使用 not in 操作符.

   

此操作是强列不推荐使用的,因为它不能应用表的索引 ; 可以使用not exists来替代.

   

8. IS NULL 或IS NOT NULL操作(判断字段是否为空)

   

判断字段是否为空一般是不会应用索引的,因为索引是不索引空值的 ;

   

用其它相同功能的操作运算代替,如:a is not null 改为 a>0 或a>''等。不允许字段为空,

   

9. LIKE的模糊查询如果用的不好也会降低性能.

   

LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,

   

如LIKE '%5400%' 这种查询不会引用索引,而LIKE '5400%'则会使用索引

   

10. 避免使用耗费资源的操作,带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎 执行,耗费资源的排序(SORT)功能.

   

   

11. 在WHERE 语句中,尽量避免对索引字段进行计算操作

   

   

   

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值