我有一个约会网站,我每天发送警报,并在ALERTS_LOG中记录警报。
CREATE TABLE `ALERTS_LOG` (
`RECEIVERID` mediumint(11) unsigned NOT NULL DEFAULT '0',
`MATCHID` mediumint(11) unsigned NOT NULL DEFAULT '0',
`DATE` smallint(6) NOT NULL DEFAULT '0',
KEY `RECEIVER` (`RECEIVER`),
KEY `USER` (`USER`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`ALERTS_LOG110`,`ALERTS_LOG111`,`ALERTS_LOG112`)
插入逻辑:我创建了合并表,每个子表都存储0-15天的记录ALERTS_LOG110。在每 1 日和 16 日,我创建一个新表并更改合并Myisam 的定义。示例:INSERT_METHOD=最后一个联合=( ALERTS_LOG111
, ALERTS_LOG112
, ALERTS_LOG113
)。
优势 :删除速度超快。
此方法的问题:1.当我更改定义时,我经常遇到站点关闭问题,因为当我更改定义时,索引需要缓存并且所有选择查询都卡住了。2.由于插入和选择过多而导致锁定问题。
那么,我可以寻找MongoDB来解决这个问题吗?
不,不是真的。 由于此日志表的性能原因,重新设计应用程序以使用两种不同的数据库类型似乎是一个糟糕的选择。
目前还不清楚为什么记录了这么多条目,但从表面上看,可能希望查看MySQL中的分区并按天或周对表进行分区,然后删除这些分区。 删除仍然非常快,并且不会停机,因为您不会每天更改对象名称。