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