如何解决测试数据库性能SQL时间尺度超表VS SQL表
我正在尝试测试timescaldb实例和常规SQL接收的性能。根据时间尺度,超表针对时间序列数据进行了优化,并且接收率高于PostgreSQL(https://docs.timescale.com/latest/introduction/timescaledb-vs-postgres)
我想将其与postgreSQL的JSONB字段进行比较,但是我的结果表明,使用JSONB字段处理时间序列实际上更快。因为到目前为止我还没有专家,所以我认为我的测试可能是不好的/错误的。这是我在做什么:
- 我创建了两个表
<telerik:GridBoundColumn DataField="Email2" HeaderText="Email" UniqueName="Email2a" ReadOnly="true" Exportable="true" /> <telerik:GridTemplateColumn DataField="Email2" HeaderText="Email" UniqueName="Email2" Display="false" Exportable="false"> <EditItemTemplate> ... </EditItemTemplate> </telerik:GridTemplateColumn>
和timeseriesold
:
timeseriesnew
然后,我循环33次8700个时间序列,以使用JSONB字段来保存我的时间序列数据,如下所示:
CREATE TABLE timeseriesold (
description TEXT NOT NULL,data_json JSONB NOT NULL,);
CREATE TABLE timeseriesnew (
time TIMESTAMPTZ NOT NULL,data_json DOUBLE PRECISION NULL,);
这大约需要一秒钟。
我将timeseriesnew转换为一个超表。我猜在一个超表中,每一行都是一个时间戳。因此我将时间戳循环287100次(33 * 8700),如下所示:
DO $FN$
BEGIN
FOR counter IN 1..33 LOOP
RAISE NOTICE 'COUNTER: %',counter;
EXECUTE $$ INSERT INTO timeseriesnew(description,data_json) VALUES ('example','{"1": 1234,"2": 1234,..... "8700": 1234}') $$ USING counter;
END LOOP;
END;
因此,不同之处在于,我第一次循环33次以创建8700个数据点,第二次循环我287100次创建单个数据点。我的问题是双重的:
- 这是对性能的有效比较吗?
- 如果没有,我该如何进行有效比较?
任何帮助当然受到高度赞赏。非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。