移动短信网关接口开发,短信发送(优化)思路,各位一起来探讨一下

我有一个短信表(buff)放待发送的短信
buff 表 有 count 字段(发送次数),还写了两个个触发器

1、当 count >= 3 时 删除 该条信息
2、将删除的信息放在 msgBackup 中

发短信过程如下:
读取短信列表 单线程

发送到移动 (异步发送)

移动反馈结果(移动接收结果,异步接收),这个时候修改 count = 3 触发器执行 删除 和备份操作

但是修改 count = 3 数据量大时老是报错
事务(进程 ID 66)与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。

移动还反馈用户接收状态的,在msgBackup 中修改,所以也不敢将 修改 count = 3 弄成批量操作,害怕 修改移动反馈用户接收结果时 数据还在buff 中,

不知道我说的明白不,现在想求大神有什么解决思路,因为我们业务原因,发送短信很时集中,有时几个小时不发短信 ,有时半个小时不停的发

获得的信息不多 不过大体可以看出瓶颈是在与数据库的更新操作上,提几个建议
1. 消息发送类的系统不建议采用update操作,可以转换为insert操作
2. 如果一定要update建议做批处理操作 当收到反馈结果的时候,先保存在JVM里面,另起线程异步批处理更新数据库,减少和数据库的交互