docker容器中postgresql离线安装pgroonga

一、背景:

postgresql中需要提高全文检索的查询性能,现引入postgresql的扩展pgroonga。客户的postgresql是离线docker安装的postgis

二、打包pgroonga依赖包

首先需要找一台能联网的服务器,部署与客户环境一致的docker

1、进入容器,配置APT源

# 启动一个与生产环境相同版本的临时容器(例如 Debian Bookworm)
docker run -it --name temp-pg postgres/postgis:15-master /bin/bash

# 安装必要工具
apt-get update && apt-get install -y wget gnupg

# 添加 Apache Arrow 源
. /etc/os-release && \
  wget https://apache.jfrog.io/artifactory/arrow/debian/apache-arrow-apt-source-latest-$(echo $VERSION_CODENAME).deb && \
  dpkg -i apache-arrow-apt-source-latest-$(echo $VERSION_CODENAME).deb

# 添加 Groonga 源
. /etc/os-release && \
  wget https://packages.groonga.org/debian/groonga-apt-source-latest-$(echo $VERSION_CODENAME).deb && \
  dpkg -i groonga-apt-source-latest-$(echo $VERSION_CODENAME).deb

# 安装下载的源
apt install -y -V ./*deb

# 更新软件源
apt-get update

2、下载pgroonga及依赖包

apt-get download postgresql-15-pgdg-pgroonga \
  libarrow1100 \
  libarrow1600 \
  libgroonga0 \
  libmsgpackc2 \
  libprotobuf23 \
  libre2-9    \
  libsgutils2-2 \
  libutf8proc2 

三、离线安装pgroonga依赖包

1、查看离线容器的docker服务名

docker ps

2、查看容器的映射文件地址

docker inspect japan-postgres

Mounts中Source对应容器外地址,Destination对应容器内地址

3、把所有依赖包move到Source位置,进入容器,cd到Destination

docker exec -it japan-postgres /bin/bash
cd /var/lib/postgis/data/pgroonga-deps

4、安装pgroonga所有依赖包

dpkg -i *.deb || apt-get -f install -y

5、进入postgresql,创建扩展

su postgres
psql

 执行sql

CREATE EXTENSION pgroonga;
SELECT * FROM pg_extension WHERE extname = 'pgroonga';

四、验证效果

1、创建索引

CREATE INDEX idx_osm_buildings_name_pgroonga ON osm_buildings USING pgroonga(name);

2、对比效果

创建pgroonga索引的表做模糊查询,耗时<300ms,未创建索引的表耗时约为3s

#创建了pgrootgna索引的表查询sql
SELECT * FROM "import".osm_buildings where name like '%居酒屋%';

# 未创建pgrootgna索引的表查询
SELECT * FROM "import".osm_buildings_copy1  where name like '%居酒屋%';

参考文档:

Install on Debian GNU/Linux | PGroonga

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值