我想用mySQL创建一个消息系统。我在innodb表中有以下列:
此表格将使用3个查询:
Select *
From msgTable
Where USERID_RECIEVER = [id of the user who the message was sent to].
另一个是插入一行(一个新消息),一旦读取了行,最后一个将是DELETE。为了压力测试,我使用了十亿行(因为用户可以发送多条消息)。
我插入了十亿个测试行,这些行在USERID_RECIEVER
上有一个b树索引,在主键MSG_ID
上有一个唯一索引。读取速度非常快(约1秒),但插入速度太慢(10分钟以上)。这是在具有16GB RAM的6核Intel i7上运行。如果我删除索引,插入速度会快一些,因为现在只有一个索引可以重建,但读取速度非常慢。由于消息系统的性质,选择和插入我相信大致会被称为相同的次数。
我还能做些什么来提高性能,以便插件也能在约1-2秒内完成?我尝试使用批量插入,这有助于提高速度,但由于应用程序的业务逻辑,这是不切实际的。