复制代码
为懒人提供无限可能,生命不息,code不止
人类感性的情绪,让我们知难行难
首页
前端
后台
数据库
运维
资源下载
实用工具
登录
注册
ERP
【原创】SaaS进销存系统优化复盘
作者: whooyun
发表于:
2024-06-26 18:02
数据库优化方向:
1、mysql所有表根据业务需求,分别进行索引创建,尤其是唯一索引,组合索引
2、mysql冗余表字段,使用定时任务或者触发器进行同步
3、所有单表数据超过10万,则最多只允许进行俩个表关联查询,其余使用单表查询或elasticsearch进行宽表组装
4、mybatis批量插入或更新,必须使用批量SQL
5、mybatis尽量都使用mapperxml进行SQL组装,以提升查询代码的复用,减少代码的bug量
6、确定Redis键值对的规范,减少使用难度,比如定义成模块:业务:功能:属性:值
7、提供redis分布式锁,用于解决并发问题
8、分库分表时需要兼顾系统性能,比如根据企业id分表,导致了数据分布在几十,几百张表,但是发生业务的就一个企业,所以需要进行企业业务标识
9、分库时可以根据业务交叉复杂度,拆分到多个数据库实例
10、mysql需要进行读写分离,最大程度利用系统资源
11、所有的跨库DML(增加,删除,修改)增加MQ事务消息或柔性事务,保证所有的完整性和一致性
12、调整优化数据库连接池参数,并进行慢日志监控,每天将慢日志发给对应的开发人员优化
性能优化:
1、单据查询尽量使用批量查询,并控制量1000条,分页查询
2、分页深度变大时,需要考虑利用索引,数据特性(自增主键)或者分页辅助表进行优化
3、列表优化,elasticsearch只展示1万条以内的分页标签,超过只允许查看下一页,充分利用es的特性
4、利用数据冗余表或者汇总表,提升部分单据性能(盘点,采购单)
5、不使用RPC的循环调用
6、充分利用redis的缓存
7、elasticsearch连接数,商品关键字等使用分词器进行分词查询提升性能
8、redis连接数
9、Rocketmq消费者线程数
10、spring task execution pool 线程数