AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 949
Accepted
Patrick
Patrick
Asked: 2011-01-28 06:59:04 +0800 CST2011-01-28 06:59:04 +0800 CST 2011-01-28 06:59:04 +0800 CST

在 MySQL 中存储大量小尺寸条目

  • 772

我有一个数据库,用于存储来自多个仪表的读数。根据仪表的不同,该仪表可能每 1-5 分钟就会有多个读数的数据(即气象站,它存储 5 个不同的读数)。

我目前按日期存储数据。我将单个日期的特定仪表的所有内容分组在一起,并将其作为 xml 存储在文本列中。

将这些数据存储为单独的行会更有效吗?

我正在尝试确定哪个是长期最明智的解决方案(即每行数据更多的行更少,或者行更多,每行更小)。

这是一个阅读繁重的环境。

编辑:

通过“高效”,我最关心速度和资源使用情况(如果我提取一年的数据,这将是处理器/内存密集度最低的)。

我几乎完全使用这些数据为客户绘制图表。每个时间戳的读数数量是可变的,从 1 到 6 个读数。

该数据库当前是一个 INNODB。

编辑 2:

我更倾向于将数据保存在 MySQL 中以便于访问/更新。

我正在寻找更多的答案是将每个单独的时间戳(可能有多个读数)保存在单独的行中还是将多个时间戳(即最多一天的值)分组到一行中是否更聪明。

谢谢

mysql mysql-5
  • 3 3 个回答
  • 930 Views

3 个回答

  • Voted
  1. Best Answer
    Joe
    2011-01-28T07:35:14+08:002011-01-28T07:35:14+08:00

    这完全取决于您要对数据执行的操作 - 如果它仅用于绘图,并且您不需要高分辨率(例如,您不尝试使用1 年前一天的完整时间分辨率),您可能实际上想要查看RRDTool而不是关系数据库。

    如果您需要对值进行分析(一个地方多久会超过 80°F?),您将需要存储离散值,而不是 XML 结构;但您也可以使用用于处理此类数据的平面文件结构(例如, CDF、NetCDF ...甚至可能是HDF)

    更新:

    我会将每次存储为单独的记录,因为这样可以更轻松地在绘图时调整粒度。例如,要提取每小时的高/低/平均值:

    SELECT   min(date_obs),min(temp),max(temp),avg(temp)
    FROM     observations
    WHERE    date_obs between ...
    GROUP BY floor(unix_timestamp(date_obs)/3600)
    

    此外,它还允许您更改测量的节奏而无需更改表结构。

    • 2
  2. Miles D
    2011-01-28T07:18:56+08:002011-01-28T07:18:56+08:00

    如果我理解正确的话,您目前有一个包含 3 个字段的表,日期时间、仪表和读数,其中读数是一个 XML 字符串。我本以为你最好将阅读材料分成额外的栏目。首先,字符串实现可能需要更多的物理空间。其次,进行任何类型的分组、聚合、过滤等都相对困难。

    我想这取决于你的意思是我的“高效”。这可能还取决于您读取数据的内容和方式,以及数据的去向。如果将其存储为单独的字段,则网络流量可能会减少。还取决于读取数据的客户端需要用它做什么。

    • 1
  3. jcolebrand
    2011-01-28T18:25:51+08:002011-01-28T18:25:51+08:00

    我特别使用 XML 字段的原因是因为我可能将一条记录与 XML 中的“Readings”元素相关联,而下一条记录可能具有“Telemetry”XML 元素(发明一些东西)......

    实际上,对于我来说,我有不同的数据有效负载,但标头都是相同的,所以我更容易将其填充到 XML 中,因为我想要在按行表示的标头信息过滤后的有效负载,而且我可能在那个领域有不同数量的信息。例如,我的 XML 字段之一是记录编辑历史记录。这样我就可以为那条记录提供一个不断扩展的字段,并且它与它所代表的行整齐地打包在一起,而且我不必为那一组值创建一个单独的审计表。这可能不是最有效的方法,但它适合我和我的需要。

    • 1

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve