小编Ken*_*dde的帖子

如何优化2.5亿行的Mysql数据库批量插入和选择

我是一名学生,他的任务是设计传感器数据数据库。我的大学目前有一个大型数据库,里面充满了这些数据,但存储的很多内容都是不必要的。他们希望我从现有数据库中提取一些字段,并将其插入到一个新数据库中,该新数据库只包含“必需品”。我需要从旧行中提取每一行,并每天获取一次新数据。

  • 有1500个传感器。
  • 他们每分钟生成一个读数。
  • 每天约210万次阅读
  • 当前数据库约有 2.5 亿行。

将执行的查询通常是在给定时间跨度之间选择一组传感器的传感器读数。

我最初对于大量数据带来的复杂性还很天真,所以我严重低估了这项任务所需的时间。因此,加上我无法从家里访问服务器,我在这里寻求帮助和意见。

最初的设计如下所示:

CREATE TABLE IF NOT EXISTS SENSORS (
    ID smallint UNSIGNED NOT NULL AUTO_INCREMENT,
    NAME varchar(500) NOT NULL UNIQUE,
    VALUEFACETS varchar(500) NOT NULL,
    PRIMARY KEY (ID)
); 

CREATE TABLE IF NOT EXISTS READINGS (
    ID int UNSIGNED AUTO_INCREMENT,
    TIMESTAMP int UNSIGNED INDEX NOT NULL,
    VALUE float NOT NULL,
    STATUS int NOT NULL,
    SENSOR_ID smallint UNSIGNED NOT NULL,
    PRIMARY KEY (ID),
    FOREIGN KEY (SENSOR_ID) REFERENCES SENSORS(ID)
);
Run Code Online (Sandbox Code Playgroud)

设计问题

我的第一个问题是我是否应该为读数保留自动递增密钥,或者在 TIMESTAMP(UNIX 纪元)和 SENSOR_ID …

mysql innodb database-design optimization

5
推荐指数
1
解决办法
5750
查看次数

标签 统计

database-design ×1

innodb ×1

mysql ×1

optimization ×1