A1090144284 2016-05-31 08:21 采纳率: 25%
浏览 1495
已采纳

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

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

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

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

发送到移动 (异步发送)

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

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

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

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

  • 写回答

1条回答 默认 最新

  • cxw65066165 2016-05-31 09:47
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)