У меня есть таблица (Postgresql 9.6), подобная этой
CREATE TABLE m_trade (
"alias" Character Varying( 32 ),
"ts" Bigint NOT NULL,
"side" Character( 1 ),
"price" Double Precision,
"qty" Bigint );
с 50 000 000 строк.
После создания расширения timescaledb -
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Я создаюhyper_table из пустой таблицы -
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
таблице я получаю
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
с помощью
INSERT INTO
"public"."m_trade"( "alias", "price", "qty", "side", "ts" )
VALUES
('TESTALS', 16000, 5, 2, 1545307519)
это займет 1-1,5 мс, но эта задержит 4-5 мс
INSERT INTO
"public"."d_trade"( "alias", "price", "qty", "side", "ts" )
VALUES
('TESTALS', 16000, 5, 2, 1545307519)
Как я могу оптимизировать скорость вставки на d_trade
таблице?