我有一张ticketing_system
桌子,我尝试插入 10+ 百万行。所以这需要 50 秒。但我最多需要 10-15 秒。
CREATE TABLE ticketing_system (
ticket_id UUID not null default uuid_generate_v4(),
count int,
);
这是一个表结构。这是一个表结构。我只是使用这个查询。
INSERT INTO ticketing_system(count)
select * from generate_series(1,10000000);
此查询在将近 50 秒内插入数据。
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)
如何优化这个查询?我删除了索引。
我解决了。
所以我用了Citus
我用
citus
.然后我在其中创建了表格
Postgresql
并使用了Citus 在 workers 上创建了表,当我插入 1 亿行时,它花费了 10 秒。