开发者社区> 问答> 正文

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

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

展开
收起
李博 bluemind 2019-07-05 14:18:10 5144 0
4 条回答
写回答
取消 提交回答
  • 我理解楼主所说的 效率 是指不想做一次old value的查询,如果这样的话仅通过SSM框架是满足不了的,只能通过DB的组件入手优化,目前通用的做法是异步收集DB的binlog日志,进行分析和变更的存储,而且开源社区也已经有现成的轮子,具体楼主参考下其他答主的回答~

    2020-03-22 17:42:13
    赞同 展开评论 打赏
  • 感觉没有很好的办法,因为你直接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.阿里内部也是类似作用的一套服务。

    2020-03-11 01:50:25
    赞同 展开评论 打赏
  • 可以通过实现mybatis的Interceptor接口、并结合其@Intercepts注解,实现在执行sql前后打印一些你想记录的东西,包括所执行的sql语句。

    2020-02-18 17:17:30
    赞同 展开评论 打赏
  • SSM可以考虑在Mybatis添加Inteceptor拦截所有写操作,然后异步不阻断数据库操作的情况下记录表名及操作对象等

    2019-11-18 17:53:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载