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 / 问题 / 190756
Accepted
dbdemon
dbdemon
Asked: 2017-11-14 03:24:40 +0800 CST2017-11-14 03:24:40 +0800 CST 2017-11-14 03:24:40 +0800 CST

在 MariaDB / MySQL 中存储实时时间序列的最佳解决方案是什么?

  • 772

用例:测量创建给定数量的图像。对于每个图像,我们需要存储一小组质量指标(浮点数、双精度数)以及图像整数 [1 ...N]、时间戳和一个或两个外键值。然后应该在 Web 应用程序 (PHP) 中“实时”绘制,供用户评估。

每个 Web 客户端每 5 秒轮询一次数据库。理想情况下,每组质量指标的存储 + 检索时间应小于 2 秒(大约)。在最坏的情况下,可能有大约 30 个同时 Web 客户端轮询,并且可能同时写入大约 10 个测量值,导致大约 10 个写入突发。每秒1000组质量指标。

在编程语言中,这种数据可能存储在数组或列表中。由于我不知道 MariaDB / MySQL 世界中有任何类似的东西,我只是使用一个常规的 InnoDB 表,上面提到的每个值都有一个列。这已经有 90+ 百万行,预计在未来几个月内增长更快。

InnoDB 总体上是最好的存储引擎,还是我应该考虑其他?最好的做法是在一段时间后存档数据,也许是在处理完所有测量图像后?是否有助于启用压缩,或者这会对性能产生非常负面的影响?

mysql mariadb
  • 2 2 个回答
  • 14871 Views

2 个回答

  • Voted
  1. Best Answer
    Rick James
    2017-11-14T06:17:30+08:002017-11-14T06:17:30+08:00

    仅使用 MySQL/MariaDB,我将采用:

    • 高速摄取:http: //mysql.rjweb.org/doc.php/staging_table
    • 汇总表(使获取数据更快):http: //mysql.rjweb.org/doc.php/summarytables
    • 我什至会考虑不存储原始数据;而是总结数据,然后折腾它。如果这是可行的,它可以避免你提出的大部分问题。
    • (如果需要清除数据):快速删除旧数据:http: //mysql.rjweb.org/doc.php/partitionmaint
    • FOREIGN KEYS由于额外的开销,我会避免。(相反,我会调试 SQL。)
    • 我不会使用 UUID 键;在巨大的表格中,性能会严重下降。( http://mysql.rjweb.org/doc.php/uuid )
    • AUTO_INCREMENT我会避免使用额外的索引——如果其他一些列是唯一的,请不要使用。
    • 你提到空间——请详细说明。2D 查找很棘手;SPATIAL是一种方法;这是另一个:http: //mysql.rjweb.org/doc.php/latlng

    你的最后一段抛出了问题的厨房水槽(Toku、MyRocks、存档、压缩、历史表)。我很惊讶这个帖子没有因为“太宽泛”而被杀。请详细说明您的数据和查询是什么样的;否则,我们所能做的就是扔一个装满解决方案的厨房水槽。

    你说“实时”,但你需要“千/秒”。你能允许实时延迟 1 分钟吗?1秒?你不能得到 1ms;1s将很难实现。爆发持续多长时间?什么是每分钟爆发?1K/sec 可能会在接下来的几秒钟内溢出。6K/分钟也不是很麻烦。

    有多少客户端正在存储数据?一些解决方案适用于单个客户端;多个客户需要不同的解决方案。

    请记住,基准测试是为了炫耀一件事而调整的,很少与现实生活相匹配。

    • 13
  2. greenweeds
    2017-11-14T04:10:35+08:002017-11-14T04:10:35+08:00

    那里有一些大问题可能需要比这里更仔细的检查,因为有很多依赖项(意识到你知道这一点!)。Percona Live 和 Percona Live Europe 页面上的演示文稿中有许多幻灯片集,这些幻灯片集可能会帮助您进一步了解时间序列。例如,关于使用 Yandex 的 ClickHouse

    https://www.percona.com/live/17/program/schedule/time-series

    https://www.percona.com/live/e17/program-open-source-databases

    您可能还会发现一些博客文章很有趣。这篇文章着眼于 TokuDB 与 InnoDB 的时间序列基准。

    https://www.percona.com/blog/2013/09/05/tokudb-vs-innodb-timeseries-insert-benchmark/

    而这个关注 MongoDB 和 TokuMX https://www.percona.com/blog/2015/05/26/storing-time-series-data-with-mongodb-and-tokumx/

    希望这些帮助。

    • 4

相关问题

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

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

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

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

Sidebar

Stats

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

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +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

热门标签

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