PG中OLAP类插件之pg_duckdb介绍,性能提升不止1000倍

0    255    1

Tags:

👉 本文共约3852个字,系统预计阅读时间或需15分钟。

pg_duckdb简介

https://github.com/duckdb/pg_duckdb

https://docs.pgduckdb.com/quickstart

https://hub.docker.com/r/pgduckdb/pgduckdb

pg_duckdb 是一个扩展模块,旨在将 PostgreSQL 和 DuckDB 结合使用,提供了一种在 PostgreSQL 中访问 DuckDB 功能的途径。DuckDB 是一种面向分析工作负载优化的嵌入式列存储数据库,其特点是高性能、开箱即用且支持多种分析功能。

pg_duckdb 是一种强大的扩展,特别适合数据分析、外部数据集成以及需要高性能查询的场景。通过它,用户可以在 PostgreSQL 的生态中轻松引入 DuckDB 的能力,进一步扩展数据库的应用范围。

核心功能

  • 嵌入式集成:pg_duckdb 在 PostgreSQL 中嵌入了 DuckDB 的功能,使用户可以利用 DuckDB 的列存分析引擎处理复杂的分析查询。
  • 无缝访问:通过 pg_duckdb,用户可以在 PostgreSQL 中直接查询 DuckDB 表,而无需离开 PostgreSQL 环境。
  • 高性能分析:DuckDB 优化了分析场景中的列式存储和向量化计算,pg_duckdb 可以充分利用这些特性。
  • 多格式支持:DuckDB 支持查询多种外部数据格式(如 Parquet、CSV 等),通过 pg_duckdb,用户可以直接从这些格式中读取数据。

优势

  • 提升查询性能:在分析场景中,利用 DuckDB 的列存优势,可以显著提升查询性能。
  • 节省存储资源:DuckDB 的列存设计在处理高基数列时具有更高的压缩效率。
  • 数据格式兼容性:支持直接加载和查询 Parquet、Arrow 等流行的数据格式,无需额外的转换。

使用场景

  1. 数据分析和聚合: pg_duckdb 适用于处理大量的分析查询,特别是涉及复杂聚合和多表联接的场景。
  2. 外部文件查询: 通过 pg_duckdb 可以直接查询 CSV、Parquet 等文件,而不需要将文件数据加载到 PostgreSQL 中。
  3. 加速 BI 工具查询: 对于与 BI 工具集成的 PostgreSQL 数据库,pg_duckdb 可以显著提高查询响应速度。

示例查询

pg_duckdb安装

docker安装使用

编译安装

To build pg_duckdb, you need:

pg_duckdb涉及到的参数

每个参数及其含义:

参数名当前值含义
duckdb.allow_unsigned_extensionsoff是否允许加载未签名的 DuckDB 扩展,默认关闭以增强安全性。
duckdb.disabled_filesystemsLocalFileSystem禁用的文件系统类型,本地文件系统被禁用可能用于限制文件访问。
duckdb.enable_external_accesson是否允许访问外部资源(文件系统、网络),启用时可能存在安全风险。
duckdb.force_executionoff是否强制执行查询计划,关闭时允许优化器调整执行计划以提高性能。
duckdb.max_memory4GBDuckDB 可用的最大内存量,默认限制为 4GB。
duckdb.max_threads_per_postgres_scan1每个 PostgreSQL 扫描任务的最大线程数,默认单线程执行。
duckdb.memory_limit4GB内存使用的硬限制,与 duckdb.max_memory 类似。
duckdb.motherduck_enabledauto是否启用与 MotherDuck 集成,auto 表示根据需要动态启用。
duckdb.motherduck_postgres_databasepostgres使用 MotherDuck 集成时,连接的 PostgreSQL 数据库名称。
duckdb.motherduck_token用于 MotherDuck 集成的身份验证令牌,为空时无法访问 MotherDuck。
duckdb.postgres_role集成 PostgreSQL 时使用的角色,为空表示未配置特定角色。
duckdb.threads-1查询执行时的最大线程数,-1 表示自动检测并使用所有可用线程。
duckdb.worker_threads-1用于并行任务的工作线程数量,-1 表示自动分配线程数量。

如果需要对某些参数进行调整或优化,建议根据具体使用场景评估参数设置。

大表测试性能

做查询操作,测试性能:

不使用pg_duckdb插件的情况下:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复