首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化超表的插入速度?

如何优化超表的插入速度?
EN

Stack Overflow用户
提问于 2018-12-24 21:44:08
回答 1查看 241关注 0票数 1

我有一个这样的表(Postgresql 9.6

代码语言:javascript
复制
CREATE TABLE m_trade ( 
    "alias" Character Varying( 32 ),
    "ts" Bigint NOT NULL,
    "side" Character( 1 ),
    "price" Double Precision,
    "qty" Bigint );

有50000 000行。

创建timescaledb扩展后-

代码语言:javascript
复制
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

我从空表创建hyper_table -

代码语言:javascript
复制
CREATE TABLE d_trade ( 
    "alias" Character Varying( 32 ),
    "ts" Bigint NOT NULL,
    "side" Character( 1 ),
    "price" Double Precision,
    "qty" Bigint );


SELECT create_hypertable('d_trade', 'ts', chunk_time_interval => 86400 , number_partitions =>31);

在此之后,在d_trade表上,我得到

代码语言:javascript
复制
INDEX "d_trade_ts_idx"  and 

TRIGGER ts_insert_blocker BEFORE INSERT  

INSERT INTO
    "public"."d_trade"( "alias", "price", "qty", "side", "ts" )
select "alias", "price", "qty", "side", "ts" from m_trade

现在,如果我尝试通过以下方式向m_trade表插入行

代码语言:javascript
复制
INSERT INTO
    "public"."m_trade"( "alias", "price", "qty", "side", "ts" )
VALUES
    ('TESTALS', 16000, 5, 2, 1545307519)

它需要1-1.5毫秒,但这一次会延迟4-5毫秒

代码语言:javascript
复制
INSERT INTO
    "public"."d_trade"( "alias", "price", "qty", "side", "ts" )
VALUES
    ('TESTALS', 16000, 5, 2, 1545307519)

如何优化d_trade表的插入速度?

EN

回答 1

Stack Overflow用户

发布于 2019-01-20 01:55:22

您是如何衡量这种插入性能的?如果您使用的是EXPLAIN之类的东西,那么timescaledb需要额外的开销,这可能会使这种比较无效。请尝试启用\timing。而且,timescaledb在规模上比postgresql更好,所以我会尝试运行批处理语句,看看您是否仍然可以得到与上面相同的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53914233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档