我有 4 台 MySQL 服务器,每台服务器每天接收大约 400 万条记录。
在对聚合记录进行一些映射处理后,我需要将所有插入的记录聚合到另一个主服务器中。所以这个新服务器每天应该接收大约 1600 万条记录。
我还需要让这个操作尽可能实时,所以我在考虑每分钟左右运行一个脚本来进行同步。或者您可以建议一些其他同步工具或机制。
所以,可能的问题是:
- MySQL 是每天 16-20 百万条记录的正确选择吗?或者我应该尝试其他东西(MongoDB、Elasticsearch 等)
- 哪种工具/语言可以在此类任务中提供最佳性能?
谢谢你。
是的,MySQL 每天可以执行 2000 万次插入,没问题。我的计算器显示每天 2000 万次相当于每秒大约 231 次插入。请参阅2010 年 Percona 的数据库性能博客中的这篇博客文章,其中讨论了每秒超过 36,000 次写入。随着从那时起对 MySQL 的优化以及硬件改进,这个数字显然会在今天更高。
从技能的角度来看,由于您已经在使用 MySQL,因此将其用于此聚合数据库可能也很有意义。
请注意,您可以通过在单个事务中组合多个插入来提高写入吞吐量。
但是,您可以使用多源复制:
因此,如果您能够使用它,那么您就不必编写任何代码来进行实际的复制。
开箱即用,使用旋转驱动器,100/秒是 MySQL 可以处理多少简单操作的更安全的经验法则。
进行一些设置更改,加上 SSD,您可以超过 1000 次/秒。
但是……让我们看看更好的方法。
当数据进入 4 个服务器中的每一个时,聚合数据。然后可以通过 4 个连接和一些小算术来合并 4 个小计——速度足够快,以便用户在浏览器前等待时就可以完成。
细节?好吧,有很多不同的方法可以完成所有这一切,如果没有看到数据和处理的细节,我无法提供任何实际细节。同时,这里有一些关于如何使用 MySQL 执行这些操作的一般性讨论:
数据仓库
摘要表
高速摄取