我有一个约会网站,我在其中发送每日警报和日志提醒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`)
插入逻辑:我创建了合并表,每个子表如ALERTS_LOG110存储0-15天记录。在每1日和16日,我创建一个新表并更改mergeMyisam的定义。
示例:INSERT_METHOD =最后一个UNION =(ALERTS_LOG111
,ALERTS_LOG112
,ALERTS_LOG113
)。
优势: 删除速度非常快。
此方法的问题: 1.当我更改定义时,我经常遇到站点故障问题,因为当我更改定义时,索引需要进入缓存并且所有选择查询都被卡住了。 2.因插入过多而选择锁定问题。
那么,我可以查看MongoDB来解决这个问题吗?
答案 0 :(得分:0)
不,不是真的。重新设计应用程序以使用两种不同的数据库类型,因为此日志表上的性能似乎是一个糟糕的选择。
为什么要记录这么多条目并不是很清楚,但从表面上看,可能会查看partitioning in MySQL并按日或按周对表进行分区,然后删除这些分区。删除仍然超级快,并且不会因为您不会每天更改对象名称而停机。