小编Wes*_*ork的帖子

一次(保证)更改后索引对“状态”字段的影响

介绍

我有一个 PostgreSQL 表设置作为队列/事件源。

我非常希望保留事件的“顺序”(即使在处理队列项之后)作为 e2e 测试的来源。

我开始遇到查询性能下降的问题(可能是因为表膨胀),并且我不知道如何有效地查询不断变化的键上的表。

初始设置

Postgres:v15

表DDL

CREATE TABLE eventsource.events (
    id serial4 NOT NULL,
    message jsonb NOT NULL,
    status varchar(50) NOT NULL,
    createdOn timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT events_pkey PRIMARY KEY (id)
);
CREATE INDEX ON eventsource.events (createdOn)
Run Code Online (Sandbox Code Playgroud)

抓取查询(伪代码)

BEGIN;  -- Start transaction

SELECT message, status
FROM eventsource.events ee
WHERE status = 'PENDING'
ORDER BY ee.createdOn ASC
FOR UPDATE SKIP LOCKED
LIMIT 10;  -- Get the OLDEST 10 events that are pending
-- I …
Run Code Online (Sandbox Code Playgroud)

postgresql index queue event query-performance

3
推荐指数
1
解决办法
502
查看次数

标签 统计

event ×1

index ×1

postgresql ×1

query-performance ×1

queue ×1