我是一个汽车追踪系统,我想将每5秒钟后每辆汽车发送的数据存储在MySql数据库中。假设我有1000辆汽车在5秒钟后将数据传输到我的系统,并且数据存储在一张表中。在某个时候,我想查询该表以生成特定车辆的报告。我在将所有车辆数据记录在一个表中或为每辆车创建一个表(1000个表)之间感到困惑。哪个更有效率?
答案 0 :(得分:0)
确定每天86400秒/ 5 =每辆车每天17280条记录。 每天将产生17,280,000条记录。通常,这对于MYSQL而言不是问题。 设计良好的表将易于查询。 如果您为每辆车买一张桌子-那是什么时候将来会有2000辆车。 但是问题还在于:您希望将数据存储多长时间? 当您的数据库是200 GB,800GB,2TB等时,很容易计算。
答案 1 :(得分:0)
一张桌子,而不是每辆车一张桌子。当您尝试备份或维护具有1000个表的数据库时,这将是垃圾场。
使该表的行尽可能短;它会有很多记录。
同时在timestamp和(car_id,timestamp)上索引该表。第二个索引使您可以有效地报告单个汽车。
答案 2 :(得分:0)
这是“冰山一角”。此处和dba.stackexchange上大约有5个与跟踪汽车/卡车相关的线程。这里是一些其他提示。
INSERTs
的速度传输,然后重新设计摄取过程。 (对于SSD,为1000 / sec。)有些技术可以使您获得10倍甚至100倍的性能,但是您必须应用它们。PRIMARY KEY(car_id, ...)
,以便高效地访问一辆车的数据。