type
status
date
slug
summary
tags
category
icon
password
能力模型
能力分类
省赛
全球总决赛
学习进度
中国总决赛
文章前言:
Postgers SQL 学习指南。
📝 环境搭建+测试样例
一、基于Docker容器开发
- 下载源代码(windowws系统建议先进docker再拉环境,不然会报很多问题)
2.进入源码目录,拉取 PolarDB-PG 的 开发镜像。(略)
- 创建并运行容器
- 进入容器后,为容器内用户获取源码目录的权限,然后编译部署 PolarDB-PG 实例。
./build报错
- 补充:通过Vscode连接并操纵容器(相当于开启虚拟机)
二、windows系统下拉取比赛代码
- 下载开发镜像
- 启动容器
- 进入容器
- 在容器中下载比赛分支代码
- 获取权限并编译部署
- 数据库构建
- 执行数据生成和清理测试(若需要查看时间,测需要修改tpch-dbgen的build.sh脚本)
三、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:
四、终端操作命令合集
五、代码初览
polar_build.sh
tpch_copy.sh
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 文件,用户可以评估查询性能。同时,脚本还进行了多次数据生成和清理操作,以便于测试和验证。
六、打包提交
1、 可选步骤,在容器中略微修改代码
备份原文件
修改代码(以下是示例代码, 请勿直接使用), 请根据自己对比赛的理解进行修改
2、可选步骤, 在容器中测试修改过的代码
生成测试数据若干
将测试数据放到与测试机一致的目录
初始化PolarDB数据库集群
测试修改过的代码(测试机考察该脚本执行时间)
result
3、可选步骤, 如果对PolarDB内核的改动较大, 建议按评测方案提供的脚本回归测试基本功能, 无误再进行后续步骤.
先停库
回归测试 确认无误
4、在容器中压缩准备提交的代码分支
先停库
清理编译过程产生的内容
打包
5、在宿主机操作, 将容器中打包好的代码文件拷贝到宿主机
6、将代码文件提交到比赛平台
打开网站: https://tianchi.aliyun.com/competition/entrance/532261/submission/1365
依次点击
- 提交结果
- 镜像路径 - 配置路径 - TCCFile -上传
~/Downloads/PolarDB-for-PostgreSQL.zip
- 确定 - 如果之前已经提交了, 要先点击删除再上传
- 上传完毕后, 点击提交
7、查看成绩
https://tianchi.aliyun.com/competition/entrance/532261/score
平台查询分数和对应的代码分支好像不太方便, 每次提交出成绩后建议自己保存一下分数以及对应的代码版本. 方便未来基于最优的版本继续迭代.
8、提交代码说明和方案(千万不要忘记这步, 否则即使成绩能进决赛也会被认为放弃决赛资格)
根据初赛评测方案, 将代码修改说明和技术方案按标准的邮件标题发送到邮箱
cscc-polardb@hz.cmpbook.com
📎 参考文章
- 基于Docker容器开发(初始)
- TPC-H测试(初始)
- 国产数据库PolarDB公开课-3 安装部署(赛前部署指南、实例部署)
有关问题,欢迎您在底部评论区留言,一起交流~
- 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!