【发布时间】:2013-09-02 10:36:07
【问题描述】:
我正在考虑重新开发一个存储和可视化传感器数据的应用程序。该应用程序可供多个用户访问,他们可以添加无限的传感器。我们现在有 10 个用户,我们有大约 1000 个传感器。用户数量可能不会改变。如果有足够的电力(太阳能电池板),传感器每 5 秒发送一次数据。
目前数据存储在 4 个表中。
- 用户 [ID、电子邮件、密码等]
- 设备 [id, name, user_id] user_id: 外键
- 传感器 [id, device_id, type] device_id: 外键
- 数据 [id, sensor_id, time, data] sensor_id: 外键
问题是数据表变得非常大。目标是将数据保留近一年。我使用 MySQL,我对它的性能非常失望。现在我正在使用带有 Gunicorn 的烧瓶,并且正在使用 RabbitMQ 来排队存储过程。我有什么可以改变的来提高现有系统的性能吗?如果你从头开始做这件事,你会做出什么改变? NoSQL 会在这种情况下产生重大影响吗?我要求太多了,但这是我第一次遇到这种问题。
【问题讨论】:
-
性能不能接受的原因是什么?你可以说得更详细点吗?在不知道您正在执行的操作执行得太慢的情况下,我不明白这是如何回答的。
-
一段时间内尝试选择数据时出现问题。用户只是坐在那里等待查询执行。我说的是30秒。有时它会达到设置为 45 秒的超时。
-
您是否索引了您的
time列? -
不,我没有。我会试试看。希望它会改善这种情况。
-
您应该会看到显着的改善。
标签: mysql scalability