type
status
date
slug
summary
tags
category
icon
password
文章前言:
Postgers SQL 学习指南。
📝 环境搭建+测试样例
一、基于Docker容器开发
- 下载源代码
2.进入源码目录,拉取 PolarDB-PG 的 开发镜像。
- 创建并运行容器
- 进入容器后,为容器内用户获取源码目录的权限,然后编译部署 PolarDB-PG 实例。
- 补充:通过Vscode连接并操纵容器(相当于开启虚拟机)
二、TPC-H 测试
- 部署 PolarDB-PG
- 进入容器,通过 tpch-dbgen工具来生成测试数据。
通过参数设置,可以定制化地创建不同规模的 TPC-H 数据集。
-user
:数据库用户名
-db
:数据库名
-host
:数据库主机地址
-port
:数据库服务端口
-run
:执行所有 TPC-H 查询,或执行某条特定的 TPC-H 查询
-option
:额外指定 GUC 参数
-scale
:生成 TPC-H 数据集的规模,单位为 GB
- 进入
tpch-dbgen/
目录下,通过psql
连接到数据库。
- 执行 PostgreSQL 单机并行执行
以 Q18 为例,执行查询:
5.执行 ePQ 单机并行执行
PolarDB for PostgreSQL 提供了弹性跨机并行查询(ePQ)的能力,非常适合进行分析型查询。
以 Q18 为例,执行查询:
可以看到比 PostgreSQL 的单机并行执行的时间略短。加大 ePQ 功能的节点并行度,查询性能将会有更明显的提升:
使用 ePQ 执行 Q17 和 Q18 时可能会出现 OOM。需要设置以下参数防止用尽内存:
6.执行 ePQ 跨机并行执行
在上面的例子中,出于简单考虑,PolarDB for PostgreSQL 的多个计算节点被部署在同一台主机上。在这种场景下使用 ePQ 时,由于所有的计算节点都使用了同一台主机的 CPU、内存、I/O 带宽,因此本质上是基于单台主机的并行执行。实际上,PolarDB for PostgreSQL 的计算节点可以被部署在能够共享存储节点的多台机器上。此时使用 ePQ 功能将进行真正的跨机器分布式并行查询,能够充分利用多台机器上的计算资源。
参考 进阶部署 可以搭建起不同形态的 PolarDB for PostgreSQL 集群。集群搭建成功后,使用 ePQ 的方式与单机 ePQ 完全相同。
如果遇到如下错误:可以尝试统一修改每台机器的 MTU 为 9000:
三、终端操作命令
四、其他
tmp_basedir_polardb_pg_1100_bld
bin
tmp_basedir_polardb_pg_1100_bld/bin/polar-initdb.sh——管理本地 PostgreSQL 数据目录与 Polar 数据目录之间的复制和清理操作。具体功能包括验证路径、复制必要的数据库文件和目录、清理本地目录中的内容,并输出相关信息。
tmp_basedir_polardb_pg_1100_bld/bin/polar-replica-initdb.sh——初始化本地 PostgreSQL 数据目录以便与 Polar 数据目录进行交互。它检查参数、创建必要的目录、并确保环境的有效性。
include
lib
share
docker-entrypoint.sh——实现了一个自动化的 PolarDB 集群的部署与管理流程。
.psql_history——这段代码主要用于在 PolarDB 中配置和测试不同的并行度设置,测量执行时间并运行一系列 SQL 脚本。通过调整并行度和优化器设置,用户可以评估不同配置对查询性能的影响。
.bash_history——这段代码主要包括对 PostgreSQL 查询的性能测试,以及对 TPCH 数据生成工具的目录导航、权限设置和数据生成操作。通过设置并行度和执行不同的 SQL 文件,用户可以评估查询性能。同时,脚本还进行了多次数据生成和清理操作,以便于测试和验证。
📎 参考文章
有关问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/aecddd31-1d3e-4c57-ac10-e75fb5a41746
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts