一尘不染

存档实时MySQL数据库的最佳方法

mysql

我们有一个实时的MySQL数据库,该数据库的插入率为99%,每秒约100个。我们希望每天都存档数据,以便我们可以在不影响主实时数据库的情况下对其进行查询。此外,归档完成后,我们要清除实时数据库。

没有(如果可能)锁定INSERT的最佳方法是什么?我们对查询使用INSERT DELAYED。


阅读 344

收藏
2020-05-17

共1个答案

一尘不染

http://www.maatkit.org/具有mk-archiver

将表中的行归档或清除到另一个表和/或文件。它旨在有效地将很小的数据块“蚕食”,而不会干扰关键的在线事务处理(OLTP)查询。它通过一个非回溯查询计划来实现此目的,该计划在每个查询中都保留在表中的位置,因此每个后续查询在查找更多可归档行方面所做的工作很少。

另一种选择是每天简单地创建一个新的数据库表。MyIsam确实具有一些优势,因为到表末尾的INSERT通常不会阻塞,并且存在合并表类型可以将它们全部放在一起。许多网站都将httpd流量记录到这样的表中。

使用Mysql 5.1,还有分区表可以做很多相同的事情。

2020-05-17