51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计一个数据库表结构来存储工业设备的历史数据(如温度、压力、运行状态),并说明如何优化查询性能(如查询某设备过去24小时的数据)。

新凯来机电一体化技术工程师难度:中等

答案

1) 【一句话结论】:采用时间序列表设计,以时间戳为主键并按时间分区,结合时间范围索引优化,确保查询过去24小时数据高效。

2) 【原理/概念讲解】:老师口吻,解释时间序列数据的核心特点(时间有序、高频、连续),关系型数据库存储时,需以时间戳为主键(保证唯一性并按时间排序),通过时间范围索引(如B+树索引时间列)加速范围查询。类比:就像图书馆按时间顺序排书,找最近24小时的书,直接查时间范围,不用翻整本。

3) 【对比与适用场景】:

对比项关系型数据库(如MySQL)时序数据库(如InfluxDB)
定义传统RDBMS,支持ACID专为时间序列设计的NoSQL
特性支持复杂关联查询、事务高效写入、时间范围索引、数据压缩
使用场景业务逻辑复杂、关联查询工业设备监控、传感器数据
注意点需手动建时间索引,避免全表扫描写入性能高,复杂查询弱

4) 【示例】:

  • 设备表(存储设备基本信息):
    CREATE TABLE device (
        device_id INT PRIMARY KEY,
        device_name VARCHAR(50),
        location VARCHAR(100),
        created_at TIMESTAMP
    );
    
  • 历史数据表(时间序列数据,主键为设备ID+时间戳):
    CREATE TABLE device_history (
        device_id INT,
        timestamp TIMESTAMP NOT NULL,
        temperature FLOAT,
        pressure FLOAT,
        status VARCHAR(20),
        PRIMARY KEY (device_id, timestamp),
        INDEX idx_timestamp (timestamp) -- 时间范围索引
    );
    
  • 查询过去24小时数据(示例SQL):
    SELECT * FROM device_history 
    WHERE device_id = ? AND timestamp >= NOW() - INTERVAL 24 HOUR;
    

5) 【面试口播版答案】:
面试官您好,针对工业设备历史数据存储,我会设计一个以时间戳为主键的表结构,并优化查询性能。首先,创建设备表存储设备基本信息,然后设计历史数据表,主键为设备ID和时间戳,确保数据按时间有序。为了查询过去24小时数据高效,添加时间戳的B+树索引,利用范围扫描。比如,查询某设备过去24小时数据时,数据库通过索引快速定位时间范围,避免全表扫描。这样既保证数据完整性,又提升查询效率。

6) 【追问清单】:

  • 问:数据量有多大?是否需要实时写入?
    答:假设数据量百万级,写入频率高(如每秒100条),需要支持实时查询。
  • 问:如何处理数据冗余或数据回滚?
    答:通过时间戳唯一性,可以删除或更新历史数据,但通常保留历史数据,用时间范围查询覆盖。
  • 问:是否需要聚合查询(如统计24小时平均温度)?
    答:可以添加聚合索引或使用窗口函数,但基础表按时间排序,聚合查询时利用索引范围。
  • 问:高并发写入时如何优化?
    答:使用按时间范围分区,每个分区独立写入,避免锁竞争。
  • 问:如何处理数据压缩?
    答:关系型数据库可启用行级压缩(如ZSTD),减少存储空间,同时保持查询性能。

7) 【常见坑/雷区】:

  • 主键设计错误:用自增ID作为主键,导致时间排序慢,查询时全表扫描。
  • 没有时间索引:查询时间范围时全表扫描,性能差。
  • 分区策略不合理:按天分区但查询小时数据需扫描多个分区,I/O开销大。
  • 索引覆盖不足:查询需回表,增加I/O。
  • 忽略数据压缩:存储空间大,影响磁盘I/O,降低查询速度。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1