目前,我有一张桌子,而且它的填充速度非常快。我有 50 台设备。我每 30 秒从每个设备收集一次数据。因此,在我们添加 10,000 台设备后,它们每月将生成 876,000,000 条记录——这非常多!
INSERT INTO unit_data
(`id`,`dt`,`id_unit`,`data1`,`data2`,
`ip`,`unique_id`,`loc_age`,`reason_code`,
`data3`,`data4`,`Odo`,`event_time_gmt_unix`,
`switches`,`on_off`,`data5`)
这是我的人际关系
PRIMARY KEY (`id`),
UNIQUE KEY `id_unit_data_UNIQUE` `id`),
KEY `fk_gp2` (`id_unit`),
KEY `unit_dt_id` (`dt`,`id_unit`),
KEY `unit_id_dt` (`id_unit`,`dt`),
CONSTRAINT `fk_gp2` FOREIGN KEY (`id_unit`) REFERENCES `unit` (`id_unit`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1049392 DEFAULT CHARSET=utf8$$
我面临着非常复杂的查询和报告,当我这样做时,我们的系统没有响应并达到执行超时。(这是超过 200 万条记录)
我需要重新思考和重新实现数据库结构。目前我正在考虑
- 为每个单元创建新表
- 为每个月的每个单位创建新表
你有什么建议?