开发中注意下面几点:

一、sql优化:
优化原则参考下面几点:
1.能过滤掉多数数据的条件放在最后,例如查询债权,从左到右的顺序为表关联、债权状态、投资人ID,项目ID,债权ID
2.能不用left/right join的尽量不用
3.多表关联将数据少的表放在右边,比如项目表和债权表关联将项目表放右边
4.数据类型精确匹配,查询条件的数据类型要和数据库类型一致,减少类型转换的消耗;比如字符类型用xxx='yy',数字类型用xxx=n;
5.能用union或between 不用 or 和 in
6.能用union all(不去重)避免用union(去重);


二、更新、删除加乐观锁,并获取更新条数:
    更新数据不要更新整个表字段,只更新需要更新的字段,新开发的功能要求删除、更新要有乐观锁(可以是时间戳字段或被更新字段更新前的值),防止数据已被更新,
并且获取更新受影响的行数判断是否更新成功,如果更新不成功根据具体业务需要做相应处理
比如:
资金余额更新,where 条件可以加上 余额=原来的余额,modifytime=更新前的时间戳,
债权状态更新,where 条件可以加上 状态=原来的状态,modifytime=更新前的时间戳;


注意:现有的更新语句没有判断字段是否有值就直接更新了,未被赋值的字段会被覆盖成空值,原来的更新语句是需要改造的,不能直接使用


三、获取当前时间:
    mgr层统一用getCurrentDbTime()获取当前时间(已改造,更新/seaway-p2p-biz-mgr/src/main/java/com/seaway/p2p/biz/mgr/base/BaseMgrImpl.java),不用查询数据库,但要注意这里是因为我们有时间服务器保证数据库时间一致,如果没有这个机制不能这样写;
public Date getCurrentDbTime() {
    return new Date();
}


四、事务(多表操作,且表之间数据要求强一致性):
    涉及事务的操作不能直接把更新操作写在ctr层(ctr层没有事务管理),统一写在mgr(分库后的代码结构略有不同,到时候会给大家培训),不需要事务的操作不要加事务






其他优化事项我们逐步完善,规范,也欢迎大家主动提出优化建议;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值