dbd*_*mon 8 mysql mariadb percona
用例:测量创建给定数量的图像。对于每张图像,我们需要存储一小组质量指标(浮点数、双精度数)以及图像整数 [1 ...N]、时间戳和一个或两个外键值。然后应该在 Web 应用程序 (PHP) 中“实时”绘制它以供用户评估。
每个 Web 客户端每 5 秒轮询一次数据库。理想情况下,每组质量指标的存储 + 检索应该花费 < 2 秒(大约)。在最坏的情况下,可能有大约 30 个同时进行的 Web 客户端轮询,并且可能同时写入大约 10 个测量值,从而导致大约 30 次的写入突发。每秒1000组质量指标。
在编程语言中,这类数据可能会存储在数组或列表中。由于我不知道在 MariaDB / MySQL 世界中有任何类似的东西,我只是使用一个常规的 InnoDB 表,上面提到的每个值都有一列。这已经有 90 多万行,预计在未来几个月会增长得更快。
InnoDB 总体上是最好的存储引擎,还是我应该考虑其他?最好的做法是在一段时间后存档数据,也许是在处理完所有测量图像后?它会帮助启用压缩,还是会对性能产生非常负面的影响?
Ric*_*mes 12
只使用 MySQL/MariaDB,我会使用:
FOREIGN KEYS
因为额外的开销。(相反,我会调试 SQL。)AUTO_INCREMENT
如果其他列是唯一的,请不要使用。SPATIAL
是一种方法;这是另一个:http : //mysql.rjweb.org/doc.php/latlng你的最后一段抛出了问题的厨房水槽(Toku、MyRocks、存档、压缩、历史表)。我很惊讶这个帖子并没有因为“太宽泛”而被删除。请详细说明您的数据和查询是什么样的;否则,我们所能做的就是扔一个装满解决方案的厨房水槽。
你说“实时”,但你需要“数千/秒”。你能允许实时延迟 1 分钟吗?1秒?你不能得到 1ms;1s 很难实现。一次爆发能持续多久?什么是每分钟爆发?1K/秒可能会溢出到接下来的几秒钟。6K/分钟也不是很麻烦。
有多少客户端存储数据?一些解决方案适用于单个客户端;多个客户需要不同的解决方案。
请记住,基准测试是为了炫耀一件事,很少与现实生活相匹配。
小智 5
那里有一些大问题,可能需要比这里更仔细的检查,因为有太多的依赖关系(意识到你知道这一点!)。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/
希望这些有帮助。
归档时间: |
|
查看次数: |
11914 次 |
最近记录: |