开发者社区> 问答> 正文

PostgreSQL全文检索的性能问题

近期业务需要,准备上全文检索功能。原始数据是2000W+的txt文件,每个文件里面一段文字,平均单个文件大小100k。在实施过程中,遇到性能问题。

  1. 硬件配置:

阿里云ECS,2CPU/8G内存,自己安装的PG(注意:不是那个独立的RDS产品)

  1. PG版本9.4,参数如下:

fsync off
shared_buffers 1GB
work_mem 10MB
effective_cache_size 2GB
maintenance_work_mem 512MB
checkpoint_segments 32
checkpoint_completion_target 0.9
wal_buffer 8MB
commit_delay 10
commit_siblings 4

  1. 表结构:

CREATE TABLE sys_document
(
id serial NOT NULL, -- 自增主键
doc_content_plain character varying, -- 文本原文
doc_content_plain_tsvector tsvector, -- 文本的搜索分词
doc_content_bin bytea, -- 文本的二进制原文
href character varying, -- 设计用来网络访问的url
created_at timestamp without time zone -- 创建时间
)

  1. 全文检索的相关扩展

采用了zhparser做中文分词扩展

  1. 性能问题:任何操作都非常慢

例如:UPDATE sys_document SET href = ''; (6个小时)

例如:UPDATE sys_document SET doc_content_plain_tsvector = to_tsvector('testzhcfg', doc_content_plain character); (运行了2天,没有结果,于是停掉)

例如:CREATE INDEX sys_document_doc_content_plain_tsvector_idx ON sys_document USING gin(to_tsvector('testzhcfg', doc_content_plain character)); (3天了,还在运行)

请问,这个方案的瓶颈可能在哪里呢?是方案本身有问题吗?

展开
收起
troyzhao 2016-10-01 11:45:56 3791 0
1 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载