导致数据内存溢出
出现问题
1>网点工作人员在导出报表是去除掉所有的查询条件,导致返回数据量太大,服务器内存溢出
2>select * from project where ...
解决问题
1>前端设计
- 限制导出数量上限
- 防止连续点击导出按钮
- 防止重复请求
2>后端设计
- 使用count(*)统计数量后校验
- 校验数量总量,如果超过规定的值则直接报错,返回错误信息给前端
3>sql优化
- 游标分批导出大量数据,与前端沟通
并发读写数据脏读
出现问题
高并发下,多个请求同时读取一个共享变量,其他事务读取了未提交的数据(脏读)
解决方法
1>后端添加数据库事务,保证数据的一致性
2>使用ThreadLocal关键字进行线程封闭
3>使用分布式锁保证并发安全(redission)
数据库连接池占满
出现问题
一个后台轮询任务中,跳出循环导致事务未提交,积压大量数据库连接
解决方法
1>确保事务提交,Finally块中提交事务
2>缩小事务范围,避免长事务
3>检测连接使用情况,配置合理连接池
4>使用数据库监控工具诊断并优化
标签:事务,网点,数据库,导出,并发,前端,提交,运营,新意 From: https://www.cnblogs.com/liumingsen/p/17684486.html