400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
可以设想一下,当你驾驶着一辆新能源汽车在高速上驰骋,你脚下的数据采集器在一秒钟内通过提前设置的 80 个指标采集到了 80 个数据,总大小为 2KB,你可以在一分钟的单位时间内观测这些不断回传的数据,运用它们实时分析你想知道的任何状况,但在此之前必须要通过一个靠谱的数据库来对珍贵的数据进行写入、保存。毋庸置疑,时序数据库要接入大量设备的实时数据,加载性能至关重要! 本节你将会利用 YMatrix 中的高级组件 MatrixGate、MatrixBench 进行强大的数据接入性能测试,为之后的数据分析提供靠谱保障。 我们的物理机硬件测试环境如下,硬件环境参数有可能会影响工具配置参数,记得选取适合自己的。
机器配置如下:
参数 | 配置 |
---|---|
CPU 核数 | 2 物理核 32 逻辑核 |
CPU 平台 | Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz |
内存 | 256GB |
储存容量 | 9.0TB(1.4 GB/秒写入,3.3 GB/秒读取) |
linux 发行版本 | CentOS Linux release 7.8.2003 (Core) |
linux 内核 | 3.10.0-1127.el7.x86_64 |
MatrixGate 简称 mxgate,是一款高性能流式数据加载服务器,位于 YMatrix 安装目录下的 bin/mxgate。该工具会充分发挥分布式数据库的并行处理性能,是生产环境中做数据加载的必选工具。在测试环节,mxgate 将配合 mxbench 的数据写入工具 writer 对随机数据生成器 generator 生成的数据进行高速写入。
更多相关信息请见 mxgate
mxbench 是一款数据加载和查询的压测工具,可以根据你想要的设备数量、时间范围、指标数量等配置并快速生成随机数据,自动创建数据表,串行或并发进行数据加载和查询。你可以通过命令行配置并运行 mxbench,也完全可以写进特定的配置文件,遵从个人习惯即可。mxbench 工具位于 YMatrix 安装目录下的 bin/mxbench。
单机部署,Master + 6 个 Segment
注意!
你需要把 MatrixGate,MatrixBench 与 YMatrix 集群部署在同一台机器上。
我们准备了三种不同指标规模的时序场景测试用例。在此节末尾,我们会对不同指标规模下 YMatrix 的写入速度做直观对比。
注意!
使用 mxbench 进行加载测试前你需要准备好 mxbench 的测试环境:包含正常运行的 YMatrix 集群,以及配置好的相关环境变量。此步是必要步骤!mxgate 无需手动配置,因为在启动 mxbench 的同时,你已经收获了 mxgate 的配置与启动。
集群部署方式请见集群部署,mxbench 配置方法请见mxbench
mxbench 常用参数配置主要分为俩部分:全局配置与可插件化的局部配置。全局配置包含 database、global 两板块;可插件化的配置包含数据生成器 generator、数据写入工具 writer、数据查询工具 benchmark。
由于本节主要目的为体验 YMatrix 加载性能,因此对于 mxbench 的查询工具 benchmark 不以赘述。 benchmark 相关信息请见 mxbench
具体如下:
参数名 | 默认值 | 参数含义 |
---|---|---|
--database | 默认值为环境变量 PGDATABASE,如没有设置则是 postgres | 目标数据库名 |
--db-master-port | 实例的端口号,需与环境变量中配置的端口号一致 | |
--db-user | 检查当前的用户名,并作为默认值 | 用户名 |
--workplace | /tmp/mxbench | csv 数据文件,query 文件的目录 |
--watch | true | 是否开启进程观察,默认开启 |
--simultaneous-loading-and-query | false | 是否同时执行数据加载和查询。默认值 false,先执行数据加载,执行完毕后再执行查询 |
--table-name | 目标表名,默认值为空,必需手动指定 | |
--tag-num | 25000 | 目标设备数目 |
--metrics-type | float8 | 指标类型,只支持 "int4", "int8", "float4", "float8", 4种类型 |
--total-metrics-count | 300 | 指标总数 |
--ts-start | 生成数据时间戳起始时间 | |
--ts-end | 生成数据时间戳终止时间 | |
--ts-step-in-second | 1 | 每几秒采集一次指标 |
--generator | telematics | 随机数据生成器,默认生成车联网场景的时序数据。你也可以选择从自己的数据文件读取数据且发送至 mxgate 加载,不生成任何数据也是被允许的 |
--generator-batch-size | 1 | 在特定时间戳下,每个设备的各个指标的数据拆分为几条上传至集群。默认值为 1,即不作拆分 |
--generator-disorder-ratio | 0 | 延迟上报数据的比例。取值 0~100。默认值为 0, 即没有延迟上报的数据。 通过设置此参数,你可以根据你的需要来模拟实际时序场景的任何延迟上报状况 |
--generator-empty-value-ratio | 90 | 每行数据的空值率。取值为 0~100。 默认值为 90,即 90% 的指标都将是空值。此参数是为了模拟实际时序场景中的空值情况 |
--generator-randomness | OFF | 指标数据随机度。分为 OFF/S/M/L 四个级别。默认为 OFF,即每行数据值相同。SMALL、MIDDLE、LARGE 级别的数据随机度按顺序依次增大 |
--writer | http | 数据写入工具。可以选择以何种模式启动 mxgate,并从数据源接收数据。 |
你可以在 mxbench 中找到更多可以配置的参数,或在命令行输入 mxbench --help 查看完整用法。
使用以下命令行来配置并运行 mxbench,请参考上述表格并根据实际情况对参数值进行调整。由于 mxgate 和 mxbench 部署在一台机器上时候,writer 工具使用 “stdin” 不用建立网络连接、通过网络传输,而可以直接利用 Linux 系统提供的管道,因此我们在示例中使用 “stdin” 参数,轻量便捷。
[mxadmin@mdw ~]$ mxbench run \
--db-database "load_test" \
--db-database "load_test" \
--db-master-port 5432 \
--db-master-host "mdw" \
--db-user "mxadmin" \
--workspace "/tmp/mxbench/workspace" \
--watch \
--simultaneous-loading-and-query \
--table-name "test_table" \
--tag-num 100000 \
--metrics-type "float8" \
--total-metrics-count 10 \
--ts-start "2022-04-19 00:00:00" \
--ts-end "2022-04-19 00:01:00" \
--generator "telematics" \
--generator-batch-size 1 \
--generator-disorder-ratio 0 \
--generator-empty-value-ratio 0 \
--generator-randomness "OFF" \
--writer "stdin"
如果你未设置 watch 为“false”,则运行过程中可以每5秒的间隔实时看到进度信息,完成后得到以下统计信息:
┌───────────────────────────────────────────────────────┐
│ Summary Report for STDIN Writer │
├─────────────────────────────────┬─────────────────────┤
│ start time: │ 2022-07-21 15:14:08 │
├─────────────────────────────────┼─────────────────────┤
│ stop time: │ 2022-07-21 15:14:27 │
├─────────────────────────────────┼─────────────────────┤
│ size written to MxGate (bytes): │ 695333400 │
├─────────────────────────────────┼─────────────────────┤
│ lines inserted: │ 6000000 │
├─────────────────────────────────┼─────────────────────┤
│ compress ratio: │ 5.399120 : 1 │
└─────────────────────────────────┴─────────────────────┘
wirter 统计报告输出解读:
参数名 | 参数含义 |
---|---|
start time | 数据加载起始时间 |
end time | 数据加载终止时间 |
size written to MxGate (bytes) | 向 mxgate 写入数据的字节数 |
lines inserted | 插入数据的条数(行数) |
compress ratio | 压缩比,即向 mxgate 写入数据的大小和实际数据库中该表的大小的比值 |
实际运行时间与整体加载的数据量,以及机器性能有关。只要没有关掉 watch,你都可以以 5s 的间隔实时看到数据写入的进度信息,时刻掌握写入速度与时间!
注意!
mxbench 启动后会持续压测,直到时间戳值从 ts-start 到 ts-end 的数据全部加载完毕。你也可以选择在键盘按下 ctrl-c 提前结束运行。
如果你觉得直接写大篇幅的命令行过于繁杂,也可以选择以下方式:创建配置文件 mxbench.conf,将参数写进去,然后运行它。
[mxadmin@mdw ~]$ mxbench --config mxbench.conf
注意!
你可能会在写入数据时遇到“卡住”的问题,此时进度信息会持续打印,但没有任何实质性的写入进度。不要慌张,可以运行以下语句查看运行日志,排查问题:cd ~/gpAdminLogs/
。
[mxadmin@mdw ~]$ mxbench run \
--db-database "load_test" \
--db-master-port 5432 \
--db-master-host "mdw" \
--db-user "mxadmin" \
--workspace "/tmp/mxbench/workspace" \
--watch \
--simultaneous-loading-and-query \
--table-name "test_table2" \
--tag-num 100000 \
--metrics-type "float8" \
--total-metrics-count 100 \
--ts-start "2022-04-19 00:00:00" \
--ts-end "2022-04-19 00:01:00" \
--generator "telematics" \
--generator-batch-size 1 \
--generator-disorder-ratio 0 \
--generator-empty-value-ratio 0 \
--generator-randomness "OFF" \
--writer "stdin"
完成后得到以下统计信息:
┌───────────────────────────────────────────────────────┐
│ Summary Report for STDIN Writer │
├─────────────────────────────────┬─────────────────────┤
│ start time: │ 2022-07-21 15:19:48 │
├─────────────────────────────────┼─────────────────────┤
│ stop time: │ 2022-07-21 15:21:02 │
├─────────────────────────────────┼─────────────────────┤
│ size written to MxGate (bytes): │ 5555333400 │
├─────────────────────────────────┼─────────────────────┤
│ lines inserted: │ 6000000 │
├─────────────────────────────────┼─────────────────────┤
│ compress ratio: │ 25.519937 : 1 │
└─────────────────────────────────┴─────────────────────┘
[mxadmin@mdw ~]$ mxbench run \
--db-database "load_test" \
--db-master-port 5432 \
--db-master-host "mdw" \
--db-user "mxadmin" \
--workspace "/tmp/mxbench/workspace" \
--watch \
--simultaneous-loading-and-query \
--table-name "test_table3" \
--tag-num 100000 \
--metrics-type "float8" \
--total-metrics-count 1000 \
--ts-start "2022-04-19 00:00:00" \
--ts-end "2022-04-19 00:01:00" \
--generator "telematics" \
--generator-batch-size 1 \
--generator-disorder-ratio 0 \
--generator-empty-value-ratio 0 \
--generator-randomness "OFF" \
--writer "stdin"
完成后得到以下统计信息:
┌───────────────────────────────────────────────────────┐
│ Summary Report for STDIN Writer │
├─────────────────────────────────┬─────────────────────┤
│ start time: │ 2022-07-21 15:22:27 │
├─────────────────────────────────┼─────────────────────┤
│ stop time: │ 2022-07-21 15:33:40 │
├─────────────────────────────────┼─────────────────────┤
│ size written to MxGate (bytes): │ 54305333400 │
├─────────────────────────────────┼─────────────────────┤
│ lines inserted: │ 6000000 │
├─────────────────────────────────┼─────────────────────┤
│ compress ratio: │ 47.488209 : 1 │
└─────────────────────────────────┴─────────────────────┘
根据上述 writer 统计报告,我们向你提供一份更加直观的折线图对比,你可以在图中清晰了解到 YMatrix 强大的数据加载性能,以及它随着指标规模会呈现一种怎样的增长,在实际场景运用中对于设定多少指标更加胸有成竹。
时序场景中的数据是带有时间戳属性的数据点,表示某个时间时刻某个指标的值,如果丢弃时间戳属性,就不可以称之为是时序场景下的数据。理解了数据点的概念,你可以更好地理解上图。图中横轴为用例中设定的不同指标规模,对应参数 total-metrics-count,纵轴为写入速度,表示每秒单位时间内可以写入数据点的数量,你肯定已经明白,随着指标规模的扩大,写入速度呈现出一种非常快速的增长,但如果指标数据较多,速度增长也会较为受限。不过无论怎样,YMatrix 的写入速度都是百万级的,比起苦着脸使用 INSERT 语句一条一条插入,何不尝试开着YMatrix 在高速公路上驰骋一把!