我有一个巨大的表(> 30 亿行,总计 3 TB),使用 Postgres 9.5 定义如下:
CREATE TABLE user_events
(
user_id VARCHAR NOT NULL,
datetime BIGINT NOT NULL,
field1 VARCHAR,
field2 VARCHAR,
field3 VARCHAR,
field4 VARCHAR,
field5 VARCHAR,
CONSTRAINT user_events_user_id_datetime_pk PRIMARY KEY (user_id, datetime)
);
alter table user_events set (autovacuum_vacuum_cost_delay=10);
Run Code Online (Sandbox Code Playgroud)
我需要大约每秒 2000 次查询这个表,但我无法进行足够的并行化(我达到了大约一半)。
使用以下准备好的语句,我得到了合理的(我想)响应时间:
PREPARE getact AS select * from user_events where user_id = $1 order by datetime limit 1000;
explain analyze EXECUTE getact('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE user_events
(
user_id VARCHAR NOT NULL,
datetime BIGINT NOT NULL,
field1 VARCHAR, …Run Code Online (Sandbox Code Playgroud) postgresql performance postgresql-9.5 query-performance performance-tuning