Eu tenho uma ticketing_system
tabela e tento inserir mais de 10 milhões de linhas. Então isso custou 50 segundos. Mas eu preciso de quase um máximo de 10-15 segundos.
CREATE TABLE ticketing_system (
ticket_id UUID not null default uuid_generate_v4(),
count int,
);
Esta é uma estrutura de tabela. Esta é uma estrutura de tabela. Eu apenas uso esta consulta.
INSERT INTO ticketing_system(count)
select * from generate_series(1,10000000);
Esta consulta insere dados em quase 50 segundos.
explain analyze INSERT INTO ticketing_system(count) select * from generate_series(1,10000000);
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------
Insert on ticketing_system (cost=0.00..125000.00 rows=0 width=0) (actual time=52620.980..52620.981 rows=0 loops=1)
-> Function Scan on generate_series (cost=0.00..125000.00 rows=10000000 width=20) (actual time=765.900..44678.638 rows=10000000 loops=1)
Planning Time: 0.056 ms
JIT:
Functions: 4
Options: Inlining false, Optimization false, Expressions authentic, Deforming true
Timing: Generation 0.578 ms, Inlining 0.000 ms, Optimization 0.174 ms, Emission 1.199 ms, Total 1.952 ms
Execution Time: 52631.718 ms
(8 rows)
Como otimizar esta consulta? Eu larguei índices.
Eu resolvi.
Então eu usei o Citus
Criei o trabalhador e coordenador com
citus
.Então eu criei a tabela
Postgresql
e usei oCitus criou a tabela de trabalhadores e quando inseri 100 milhões de linhas, custou 10 segundos.