模块八 消息队列 mysql 存储表结构设计
字段如下:
1、id bigint 主键,自增长 不可为空
2、msg_context varchar(100) 消息内容 不可为空,无默认值
3、queue_name char(20) 消息名称,不可为空
4、status tiyint 消息状态,1 未发送,2,已发送,3,发送失败 不可为空,无默认值
5、create_time 创建时间,默认值为 now(),不可为空
status 和 queue_name 及 create_time 创建一个联合升序索引,因为 status 在一般情况下不能用于创建索引,因为数据区分度低,但是在这里存在热点数据,所以区分度相当高了,我们查询最老的一条没发送的数据,就可以使用,这里使用了三个字段做联合查询,是因为这个查询用了三个字段,这样就可以使用到索引查询
select * from table1 where status=1 and queue_name='名称' order by create_time asc limit 1
当然一次取多条也是可以的
评论