我正在开发一个巨大的在线短信系统,用户可以从用户面板发送消息,这些消息将发送到名为messages_queue
的mysql表。
然后,系统获取队列行并在Cronjob中发送每条消息。当然,以非常快的方式发送消息非常重要。
我认为直接发送消息(根据用户请求)并且不使用队列并不是更好吗? (发送消息需要连接到外部API)
当我考虑数据库I / O时,我发现了这一点 这不是数据库的压力吗?
修改/答案:
我的问题主要是基于意见的问题。为了将来的使用,我将写下我做的和我得到的。关于@bansi的评论,我试着索引我的表格,这就是我所看到的:
这就是我在开始时所得到的,例如:
SELECT * FROM users WHERE parent="admin"
//response:OK
//Time: 3.581s
你知道,查询的时间是3.581秒。然后我试着准确地获取我需要的东西:
SELECT uname FROM users WHERE parent="admin"
//response:OK
//Time: 1.02s
好的,这有点好,但仍然不是我想要的 所以,我尝试了这个: 索引数据库中的可查询字段并在查询中使用INDEX:
SELECT uname FROM users USE INDEX(parent) WHERE parent="admin"
//response:OK
//Time: 0.168s
是的,这就是我想要的。使用INDEX
和specific needed fields
的速度提高了约30倍,这正是我所需要的。
答案 0 :(得分:1)
队列的优点是能够更快地响应用户,因此尽管短信发送速度不快,但用户会认为系统更快,因为他们点击“发送”并获得反馈立即。您可以尝试将队列从数据库中移出到专用的队列处理系统,如RabbitMQ。
答案 1 :(得分:1)
好吧,我之前使用MySQL排队,如果你不清理表,它会变得很慢,你可以使用它,但你总是清理已执行的行......
但是如果你正在寻找一个真正的队列系统,我会推荐RabbitMQ,你能用它做多少就很容易而且真的太棒了。