您的位置:首页 > 其它

开发中注意下面几点:

2016-05-03 09:02 204 查看
一、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(分库后的代码结构略有不同,到时候会给大家培训),不需要事务的操作不要加事务

其他优化事项我们逐步完善,规范,也欢迎大家主动提出优化建议;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: