mysql - 归档实时 MySQL 数据库的最佳方式

标签 mysql database

我们有一个实时的 MySQL 数据库,它的 INSERT 率为 99%,大约每秒 100 次。我们希望每天归档数据,以便我们可以在不影响主实时数据库的情况下对其运行查询。另外,一旦归档完成,我们要清除实时数据库。

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

最佳答案

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

archives or purges rows from a table to another table and/or a file. It is designed to efficiently “nibble” data in very small chunks without interfering with critical online transaction processing (OLTP) queries. It accomplishes this with a non-backtracking query plan that keeps its place in the table from query to query, so each subsequent query does very little work to find more archivable rows.

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

在 Mysql 5.1 中,也有分区表可以做很多相同的事情。

关于mysql - 归档实时 MySQL 数据库的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65093/

相关文章:

database - 如何查看数据库服务器中当前监听器的状态?oracle

MySQL 数据库 JOIN 表和搜索 WHERE <多列>

php - CakePHP saveAll() 带唯一约束

MySQL 并发和 auto_incrementing key

c# - c# 中的 sql 查询中的索引(从零开始)

php - 通过PHP获取数据库的列名

php - 在 Heroku "PDOException in Connector.php line 55"(sqlite) 上部署 Laravel

mysql 用 php column1 SET = array[0][0] 更新?

mysql - LIKE 语句查询不准确

java - @Query 无法解析我的数据库