请教一下各位前辈 实体在增删改前怎么可以更加高效的记录属性的变化日志 比如一个字段age 做了保存10->12 要记录 old value 10 new value 操作 update ,目前只是在操作前把原来的查出来比较后记录一下,但是效率感觉不行-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请教一下各位前辈 实体在增删改前怎么可以更加高效的记录属性的变化日志 比如一个字段age 做了保存10->12 要记录 old value 10 new value 操作 update ,目前只是在操作前把原来的查出来比较后记录一下,但是效率感觉不行

李博 bluemind 2019-07-05 14:18:10 1086

项目是ssm框架 这方面可以怎么优化吗?
本问题来自云栖社区【阿里Java技术进阶2群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

Java
分享到
取消 提交回答
全部回答(4)
  • 1869989066964925
    2020-03-22 17:42:13

    我理解楼主所说的 效率 是指不想做一次old value的查询,如果这样的话仅通过SSM框架是满足不了的,只能通过DB的组件入手优化,目前通用的做法是异步收集DB的binlog日志,进行分析和变更的存储,而且开源社区也已经有现成的轮子,具体楼主参考下其他答主的回答~

    0 0
  • thetcc
    2020-03-11 01:50:25

    感觉没有很好的办法,因为你直接update set age = $newValue 就是拿不到oldValue的,就是要查一下才知道。 一定要在应用做的话,先查出来记录,然后通过主键id更新,应该效率还好。

    如果你要监听数据库变更记录,通用的做法是监听binlog日志。 1.阿里云RDS 有 “数据传输服务DTS” 服务:https://www.aliyun.com/product/dts?spm=5176.10695662.1169300.1.3bdb68f8xgQIpp 2.binlog监听组件也有开源组件:https://github.com/alibaba/canal 3.阿里内部也是类似作用的一套服务。

    0 0
  • t.s.f.h
    2020-02-18 17:17:30

    可以通过实现mybatis的Interceptor接口、并结合其@Intercepts注解,实现在执行sql前后打印一些你想记录的东西,包括所执行的sql语句。

    0 0
  • 骑老虎放羊
    2019-11-18 17:53:27

    SSM可以考虑在Mybatis添加Inteceptor拦截所有写操作,然后异步不阻断数据库操作的情况下记录表名及操作对象等

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题