mysql-sql统计还是java统计_java计算金额是放在内存中计算还是在sql中计算好呢...
目录
mysql sql统计还是java统计_java计算金额是放在内存中计算还是在sql中计算好呢?…
个人强烈推荐放在 SQL 中计算。
金额计算虽然说放在代码和放在 SQL 中其实都可以,但是大部分情况下放在 SQL 中,利远大于弊。
放在 SQL 里面的好处是不需要考虑并发情况,MySQL 本身已经通过 MVCC 帮我们做了并发控制,对于 Java 代码来说非常简单,只需要执行 SQL 就可以保证业务正常。
如果放在代码中,就需要考虑自己处理并发问题。
应用最基本的应该要支持横向扩展,既当请求增加只需要多部署几台服务就可以。这个时候,处理并发问题就很复杂。简单的一个加锁都需要用分布式锁。当然还有很多其他的解决办法,总之复杂程度都不是一两句话可以说清楚。
如果请求没那么多,单台服务肯定能搞定,不需要支持横向扩展,那也需要在 Java 层面做并发控制。在 Java 层面做并发控制,最简单的方式就是通过锁。Java 中的锁在 MySQL 上层,上层的锁肯定比下层的锁会锁住更多代码,而锁的细粒度应该是越细越好,越细效率越高。从这个层面上来说,Java 实现效率也比较低,属于费力不讨好的方式。当然我们也可以通过其他方式:比如自己实现一个 MVCC,但是复杂度也上去了。
单纯从代码实现角度考虑,根本不应该在 Java 层面做这个事情。
当然很多答主说的也很有道理:不应该直接进行金额 update 操作,这样就会导致信息丢失等。但是从题主问题描述中来看,题主的这个系统肯定不会要求那么高,而且整个系统之前就是通过 update 直接操作金额的,所以这个问题就根本不在讨论范围内。
就题主的提问:操作金额放在 SQL 中还是 Java 中这两个选项来说,必然是选择放在 SQL 中。