公司项目有个需求,给用户发送信用卡还款的提醒,具体就是,一个定时任务每天查询信用卡表,对设置了信用卡提醒的用户发送微信模版消息,但是考虑到这张表的数据以后会很多(目前是10万条数据),一次性查询然后发送模版消息服务器可能承受不了,想问问大家有什么解决的方案
公司项目有个需求,给用户发送信用卡还款的提醒,具体就是,一个定时任务每天查询信用卡表,对设置了信用卡提醒的用户发送微信模版消息,但是考虑到这张表的数据以后会很多(目前是10万条数据),一次性查询然后发送模版消息服务器可能承受不了,想问问大家有什么解决的方案
查询可以分页查询,多查几次,没有必要一次性查.
第一次查询,记录下第100条记录的id
select * from A limit 0,100;
第二次查询,根据id过滤
select * from A where id>100 limit 0,100
开多线程发
前几天看到微信群里一个人说,单节点,4核主机,64线程,100w,7分钟可以发送结束
试试无缓冲的查询方式,单纯取数据,高效很多
mysql的mysql_unbuffered_query
mysqli的MYSQLI_USE_RESULT
PDO的MYSQL_ATTR_USE_BUFFERED_QUERY
Buffered and Unbuffered queries
-------------补充一下--------
开始没注意是java问题,搜了一下java的流式读取mysql查询结果集应该是一样的功能。搬运工
http://blog.csdn.net/wuxiaoqu...
http://blog.sina.com.cn/s/blo...
http://blog.csdn.net/yzsind/a...
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
既然一次性查询的数据量太大,那么可以对表进行分页,多次查询并发送模板消息。