mysql在持续并发写入情况下的优化

新手上路,请多包涵

业务场景

7*24小时持续的数据写入和更新(行情类系统),需要存入成交记录,以及根据成交记录计算k线后更新k线

目前解决方案

使用Celery异步任务分发,获取到记录之后进程格式化然后通过mq分发到worker,对于各项目已经分库分表,worker采用gevent并发,使用INSERT xxxx ON DUPLICATE KEY UPDATE xxxx来批量插入更新

遇到问题

在mq显示任务数流入超多100多每秒之后,出现lock wait timeout exceeded try restarting transaction问题,此时增加消费者使得锁竞争更厉害,不增加消费者不能及时处理任务

目前预想

在mysql之前添加mongo,将数据在mongo进行k线的插入和更新,定期将历史数据插入mysql,清除mongo

不知道这样的方案是否做出了足够的优化,对于行情类系统持续的插入和更新应该采用什么数据存储来处理?

阅读 2.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题