我们线上的应用是golang + gorm开发的,使用了大量的基于gorm的mysql事务操作, 看到PolarDB有排队(Statement Queue)机制和热点行性能优化功能, 现在是有热点行更新的场景,我们有一个用户资产表,存在并发情况下频繁修改用户资产余额的情况,之前更新事务出现lock wait在情况比较多,比如这个
后来添加了乐观锁,情况稍好些了。所以热点行更新适用于我的这个场景吧?如果使用该功能会和我们程序中的事务操作冲突吗?
以下为热心网友提供的参考意见
PolarDB的排队机制和热点行性能优化功能是为了提高数据库的性能和并发处理能力而设计的。这些功能不会与您的程序中的事务操作冲突,相反,它们可以帮助您更好地处理并发事务和热点行更新。
在您的情况下,由于存在并发情况下频繁修改用户资产余额的情况,使用PolarDB的排队机制和热点行性能优化功能可能会对您的应用产生积极的影响。排队机制可以确保事务按照一定的顺序执行,避免因锁等待而导致的性能下降。热点行性能优化功能则可以针对热点行进行缓存和预取,进一步提高查询性能。
然而,需要注意的是,虽然这些功能可以提高数据库性能,但它们也可能带来一定的延迟。因此,在使用这些功能时,请根据您的实际需求和业务场景进行权衡。
以下为热心网友提供的参考意见
功能没有冲突,要考虑下业务场景。但可能热点行更新的效果不太好,建议还是通过SQL限流或者thread pool;如果有测试环境的话,可以打开热点行更新去进行压力测试,看下效果此回答整理自钉群“PolarDB 专家面对面 – 网络&连接&线程池功能”