我正在创建一个mysql表并编写一个API,以便每秒接收和存储1000多个设备的数据。每个设备都会向这个PHP服务器推送100多个数据点。我正在测试360个设备,每个设备有10个数据点,它每秒有3600个写入计数,这是可以理解的。但是,我注意到写入操作每秒计数随着设备数量的增加而增加。我试图谷歌每秒写入计数的饱和点,但无法找到任何。每秒最多写入次数是多少?当写入次数达到每秒10万次时,系统性能如何。有没有关于mysql数据库的专家请指教,谢谢。
答案 0 :(得分:2)
你可能能够在非常有限的测试用例中找到显示某些高数字的基准。但是有太多因素影响每秒的写入次数':
我听说有一个基准显示了一百万个"交易"每秒5.7。
但是,获得100K是一个相当大的挑战。这就是我的建议:
PRIMARY KEY
以便插入可以在表格的末尾"。innodb_flush_log_at_trx_commit=2
,sync_binlog
可能无关紧要因为批处理。至于如何快速收集大量数据,可能有多个线程,请阅读我的"High speed ingestion"博客。它讨论了ping一对表 - 一个用于接收数据,另一个用于处理(规范化,压缩,汇总)和铲入Fact表。
另一个问题......你正试图每秒将几MB推入一个表;每天加起来几乎是1TB。你会保留多长时间的数据?你有多少磁盘空间?如果您要删除旧版'数据,然后PARTITION BY RANGE
是必须的。我的Partitioning blog详细介绍了如何以非常便宜的方式执行DROP PARTITION
和REORGANIZE PARTITION
删除操作。
这导致另一个建议 - 处理数据,但不保存。好的,也许你需要一个小时的数据来处理。在这种情况下,上述所有讨论仍然适用(INDEX
限制除外)。我的高速摄取可能仍然值得做。你可以每小时一次乒乓球。一小时可能是10GB - 足以保留在RAM中,从而避免了I / O瓶颈。
答案 1 :(得分:1)
还要考虑所配置的RDS的基础EC2实例大小。