Postgres 19 延了,锅很大程度甩给了 AI。新版本给 AI 工作负载塞了一堆新东西,向量索引、JSONB 检索、分区都动了刀。
对开发者来说,光知道"有更新"没用。真正该做的是:把日常数据流配齐,让数据库跟得上 AI 的节奏。下面4件事,顺手就能做。
一、给嵌入向量建检索
AI 应用现在很流行把文本塞进向量库。Postgres 不用专门上 Milvus,用扩展就能做相似度检索。
CREATE EXTENSION vector;
ALTER TABLE documents
ADD COLUMN embedding vector(1536);
CREATE INDEX ON documents
USING ivfflat (embedding vector_cosine_ops);
查询时按余弦相似度排序,就能拿到最相关的几篇。小团队完全够用,省一套中间件。
二、JSONB + GIN,结构化半结构化一起查
AI 吐出来的数据常常是 JSON。直接存 JSONB,再建 GIN 索引,查起来不慢:
ALTER TABLE events ADD COLUMN payload jsonb;
CREATE INDEX ON events USING gin (payload);
-- 过滤嵌套字段
SELECT * FROM events
WHERE payload->>'model' = 'claude'
AND payload #> '{usage,tokens}' > 100;
存前先用工具把 JSON 弄整齐。navbox的JSON格式化能秒速缩进、校验嵌套;要按路径取某个字段值,JSON路径查找直接输入路径定位,比肉眼翻快。
三、大表就分区,别让全表扫拖垮
AI 日志、对话记录这类表涨得飞快。按月分区,查询命中单个分区就快很多:
CREATE TABLE chat_log (
created_at timestamptz NOT NULL,
session text,
content text
) PARTITION BY RANGE (created_at);
CREATE TABLE chat_log_2026_10
PARTITION OF chat_log
FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');
老数据定期挪到冷存储,热分区保持精简。别等单表几十个 GB 才想起这件事。
四、连接池,AI 调用会把你池子打满
AI 服务响应慢、请求多,很容易把数据库连接池挤爆。开个好用的连接池,限制最大连接,设个空闲回收:
PgBouncer 配置示例
max_client_conn = 500
default_pool_size = 20
reserve_pool_size = 5
idle_timeout = 300
同时用工具核对网络层。Postgres 跑在哪个网段、开放哪个端口,子网计算器和IP查询帮你快速定位,省得翻配置文件。
动手顺序
- 有向量检索需求,先加
vector扩展 - JSON 数据多的,上 JSONB + GIN
- 表开始变大,按月分区
- 请求上量了,配连接池
四步做完,Postgres 就从"能存"升级到"跟得上 AI"。
你的库现在跑在哪个版本,向量扩展装上了吗?