【参赛作品4】初窥openGauss 之参数自调优(X-Tuner)

article/2025/9/26 14:34:36

TPC-H 是一个面向分析型业务(AP)的基准测试,它由一系列热点查询组成,这些热点查询都是高度复杂的,因此执行时间往往都比较长。 在本次实验测试中,将手动向数据库加载TPC-H数据,并保存在名为 tpch 的数据库中。默认TPC-H数据库的表缺少索引,数据库的参数并没有做任何优化,因此执行效率会比较差。 本实验比较浅显,使用openGauss的参数自调优(X-Tuner:gs_xtuner)功能,对数据库进行参数优化,以提升数据库运行性能,让大家对X-Tuner参数自调优有一个初步的了解。

环境信息

  • OS:CentOS Linux release 7.6.1810
  • openGauss:2.0.0
  • CPU:1core
  • Memory:4GB

测试数据脚本清单如下:

[omm@lab01 ~]$ ls -l ~/tpch-kit-back/ 
total 1076780 
-rw------- 1 omm dbgrp  24196144 Apr 24 15:39 customer.tbl 
-rw------- 1 omm dbgrp      3814 Apr 24 15:39 dss.ddl 
-rw------- 1 omm dbgrp 753862072 Apr 24 15:39 lineitem.tbl 
-rw------- 1 omm dbgrp       287 May 25 10:52 load.sh 
-rw------- 1 omm dbgrp      2199 Apr 24 15:16 nation.tbl 
-rw------- 1 omm dbgrp 170452161 Apr 24 15:16 orders.tbl 
-rw------- 1 omm dbgrp  10553197 Apr 24 15:11 out0 
-rw------- 1 omm dbgrp 118184616 Apr 24 15:10 partsupp.tbl 
-rw------- 1 omm dbgrp  23935125 Apr 24 15:11 part.tbl 
drwx------ 3 omm dbgrp      4096 Apr 24 15:39 queries 
-rw------- 1 omm dbgrp       384 Apr 24 15:07 region.tbl 
-rw------- 1 omm dbgrp   1399184 Apr 24 15:07 supplier.tbl 

1. 配置pip,并安装setuptools-rust模块

[root@lab01 ~]# wget https://bootstrap.pypa.io/get-pip.py 
[root@lab01 ~]# python3 get-pip.py 
[root@lab01 ~]# pip -V pip 21.1.2 from /usr/local/lib/python3.6/site-packages/
pip (python 3.6) 
[root@lab01 ~]# pip install setuptools-rust

2. 安装依赖包

[omm@lab01 xtuner]$ pip install joblib 
[omm@lab01 xtuner]$ pip install threadpoolctl

3. 创建数据库并导入数据

-- 创建数据库tpch
[omm@lab01 ~]$ gsql -d postgres -p 26000 -c "create database tpch with encoding='UTF-8';"  
-- 创建测试表[omm@lab01 ~]$ gsql -d tpch -p 26000 -f ~/tpch-kit-back/dss.ddl  -- 加载测试数据并统计分析 
[omm@lab01 ~]$ vi load.sh 
---------------------------------------
for i in `ls *.tbl`; do
table=${i/.tbl/}   echo "Loading $table..."sed 's/|$//' $i > /tmp/$i   gsql -d tpch -p 26000 -c "TRUNCATE $table"gsql -d tpch -p 26000 -c "\\copy $table FROM '/home/omm/tpch-kit-back/$i' CSV DELIMITER '|'"gsql -d tpch -p 26000 -c "ANALYZE $table"
done---------------------------------------
sh load.sh 

4. 编辑requirements.txt文件

[omm@lab01 ~]$ cd /gauss/app/bin/dbmind/xtuner/ 
[omm@lab01 xtuner]$ vi requirements.txt 
---------------------------------------
删除: tensorflow>=2.2.0   keras-rl2---------------------------------------

5. 生成gs_xtuner参数调优工具(需要连接外网)

[omm@lab01 ~]$ cd /gauss/app/bin/dbmind/xtuner
[omm@lab01 xtuner]$ python3 setup.py install --user 

6. 执行快速推荐命令(基于已经作业执行的信息进行推荐,信息来源pg_stat_database等)

[omm@lab01 xtuner]$ gs_xtuner recommend --db-name tpch --db-user omm --host 192.168.0.99 --host-user omm --port 26000 
Please input the password of database: 
Please input the password of host: 
Start to recommend knobs. Just a moment, please. 
************************************* Knob Recommendation Report **************************************** 
INFO: 
+---------------------------------------+----------------------+ 
|                 Metric                |        Value         |+---------------------------------------+----------------------+ 
|             workload_type             |          ap          | 
|         dirty_background_bytes        |          0           |
|          current_locks_count          |         0.0          |
|      current_prepared_xacts_count     |         0.0          | 
|         rollback_commit_ratio         |         0.0          | 
|         average_connection_age        |       0.004575       | 
| checkpoint_proactive_triggering_ratio | 0.00863557858376511  | 
|         fetched_returned_ratio        | 0.055316264644388206 | 
|             cache_hit_rate            |  0.5028061903026831  | 
|              os_cpu_count             |          1           | 
|          current_connections          |         1.0          | 
|        checkpoint_avg_sync_time       |   1.07037996545769   | 
|            write_tup_speed            |   101.161719229361   | 
|                used_mem               |     131846656.0      | 
|           all_database_size           |   2292057.41015625   | 
|      shared_buffer_heap_hit_rate      |  25.917067253117217  | 
|            current_free_mem           |       3270760        | 
|             temp_file_size            |   3573.07285767967   | 
|                 uptime                |   38.3688171772222   | 
|              os_mem_total             |       3879956        | 
|  checkpoint_dirty_writing_time_window |        450.0         | 
|            read_write_ratio           |  47.82294541597867   | 
|             read_tup_speed            |   4837.86775193848   | 
|             max_processes             |         503          | 
|          track_activity_size          |        503.0         | 
|          search_modify_ratio          |  658741.9884425476   | 
|                ap_index               |         7.5          | 
|      shared_buffer_toast_hit_rate     |   76.6304347826087   | 
|               block_size              |         8.0          | 
|      shared_buffer_tidx_hit_rate      |   82.7893175074184   | 
|       shared_buffer_idx_hit_rate      |   97.6601060219748   | 
|           enable_autovacuum           |         True         |
|                is_64bit               |         True         | 
|                 is_hdd                |         True         | 
|              load_average             |  [1.19, 0.82, 0.8]   | 
+---------------------------------------+----------------------+ 
p.s: The unit of storage is kB. 
WARN: 
[0].The number of CPU cores is a little small. Please do not run too high concurrency.You are recommended to set max_connections based on the number of CPU cores.If your job does not consume much CPU, you can also increase it. 
[1]. The value of wal_buffers is a bit high. Generally, an excessively large value does not bring better performance.  You can also set this parameter to -1.  The database automatically performs adaptation.
*********************************** Recommended Knob Settings ********************************************** 
+---------------------------+-----------+--------+---------+---------+ 
|            name           | recommend |  min   |   max   | restart | 
+---------------------------+-----------+--------+---------+---------+ 
|       shared_buffers      |   121256  | 72752  |  139448 |   True  |
|      max_connections      |    134    |   15   |   269   |   True  | 
|    effective_cache_size   |  2909967  | 121256 | 2909967 |  False  | 
|        wal_buffers        |    3789   |  2048  |   3789  |   True  | 
|      random_page_cost     |    3.0    |  2.0   |   3.0   |  False  | 
| default_statistics_target |    1000   |  100   |   1000  |  False  | 
+---------------------------+-----------+--------+---------+---------+ 
注意:修改该推荐值之前,请确保硬件条件满足,否则可能会造成数据库无法启动的问题。 

7. [可选]迭代推荐命令(全局搜索算法,迭代式执行,每轮执行约2分钟)

  • 1> 修改配置文件
vi /home/omm/.local/lib/python3.6/site-packages/openGauss_xtuner-2.0.0-py3.6.egg/tuner/xtuner.conf ------------------------------------------------- 
修改如下行:max_iterations = 3 (从100轮改为3)benchmark_path = /home/omm/queries 
------------------------------------------------ 
  • 2> 执行命令,观察Reward数值变化,粉色输出的轮次为当前较优数值
[omm@lab01 ~]$ time gs_xtuner tune --db-name tpch --db-user omm --host localhost --host-user omm --port 26000 
Please input the password of database: 
Please input the password of host: 
Start to recommend knobs. Just a moment, please. 
WARN: The database may restart several times during tuning, continue or not [yes|no]:yes 
2021-05-26 11:09:12,710: Recorder is starting. 
|   iter    |  target   | random... | 
------------------------------------- 
2021-05-26 11:10:58,017: [0] Current reward is -102.935543, knobs: {'random_page_cost': '2.64'}. 
2021-05-26 11:10:58,018: [0] Best reward is -102.935543, knobs: {'random_page_cost': '2.64'}. 
2021-05-26 11:10:58,018: [1] Database metrics: [0.6400000000000001, 0.6007798155874045, 0.65]. 
2021-05-26 11:10:58,018: [1] Benchmark score: -102.899098, used mem: 36444544 kB, reward: -102.935543. 
|  1        | -102.9    |  0.6426   | 
2021-05-26 11:12:30,939: [1] Current reward is -91.541441, knobs: {'random_page_cost': '2'}. 
2021-05-26 11:12:30,941: [1] Best reward is -91.541441, knobs: {'random_page_cost': '2'}. 
2021-05-26 11:12:30,941: [2] Database metrics: [0.0, 0.6107552017890537, 2.6]. 
2021-05-26 11:12:30,942: [2] Benchmark score: -91.504996, used mem: 36444544 kB, reward: -91.541441. 
|  2        | -91.54    |  0.003251 | 
2021-05-26 11:13:38,617: [2] Current reward is -66.684871, knobs: {'random_page_cost': '2.46'}. 
2021-05-26 11:13:38,618: [2] Best reward is -66.684871, knobs: {'random_page_cost': '2.46'}. 
2021-05-26 11:13:38,618: [3] Database metrics: [0.45999999999999996, 0.621014394376401, 3.47]. 
2021-05-26 11:13:38,618: [3] Benchmark score: -66.648426, used mem: 36444544 kB, reward: -66.684871. 
|  3        | -66.68    |  0.4565   | 
2021-05-26 11:14:53,250: [3] Current reward is -73.748742, knobs: {'random_page_cost': '2.9'}. 
2021-05-26 11:14:53,252: [3] Best reward is -66.684871, knobs: {'random_page_cost': '2.46'}. 
2021-05-26 11:14:53,252: [4] Database metrics: [0.8999999999999999, 0.6286889335789447, 3.65]. 
2021-05-26 11:14:53,252: [4] Benchmark score: -73.712297, used mem: 36444544 kB, reward: -73.748742. 
|  4        | -73.75    |  0.9016   | 
2021-05-26 11:15:58,798: [4] Current reward is -64.467620, knobs: {'random_page_cost': '2.45'}. 
2021-05-26 11:15:58,799: [4] Best reward is -64.467620, knobs: {'random_page_cost': '2.45'}. 
2021-05-26 11:15:58,799: [5] Database metrics: [0.4500000000000002, 0.633784310797396, 3.45]. 
2021-05-26 11:15:58,799: [5] Benchmark score: -64.431175, used mem: 36444544 kB, reward: -64.467620. 
|  5        | -64.47    |  0.4544   | 
2021-05-26 11:16:59,097: [5] Current reward is -59.161970, knobs: {'random_page_cost': '2.43'}.
2021-05-26 11:16:59,099: [5] Best reward is -59.161970, knobs: {'random_page_cost': '2.43'}. 
2021-05-26 11:16:59,099: [6] Database metrics: [0.43000000000000016, 0.6393591990442545, 3.91]. 
2021-05-26 11:16:59,099: [6] Benchmark score: -59.125525, used mem: 36444544 kB, reward: -59.161970.
|  6        | -59.16    |  0.4304   | 
2021-05-26 11:18:08,157: [6] Current reward is -67.964937, knobs: {'random_page_cost': '2.39'}. 
2021-05-26 11:18:08,158: [6] Best reward is -59.161970, knobs: {'random_page_cost': '2.43'}. 
2021-05-26 11:18:08,158: [7] Database metrics: [0.3900000000000001, 0.6445245622485726, 4.05]. 
2021-05-26 11:18:08,158: [7] Benchmark score: -67.928493, used mem: 36444544 kB, reward: -67.964937. 
|  7        | -67.96    |  0.3854   | 
2021-05-26 11:19:11,917: [7] Current reward is -62.842104, knobs: {'random_page_cost': '2.43'}. 
2021-05-26 11:19:11,918: [7] Best reward is -59.161970, knobs: {'random_page_cost': '2.43'}. 
2021-05-26 11:19:11,918: [8] Database metrics: [0.43000000000000016, 0.6489102035318035, 3.5]. 
2021-05-26 11:19:11,918: [8] Benchmark score: -62.805659, used mem: 36444544 kB, reward: -62.842104.|  8        | -62.84    |  0.4301   | 
===================================== 
2021-05-26 11:19:11,926: The tuning process is complete. The best reward is -59.161970, best knobs are: 
{'random_page_cost': '2.43'}.****************************************** Knob Recommendation Report ************************************* 
INFO: 
+---------------------------------------+-----------------------+ 
|                 Metric                |         Value         | 
+---------------------------------------+-----------------------+ 
|             workload_type             |           ap          | 
|         dirty_background_bytes        |           0           | 
|          current_locks_count          |          0.0          | 
|      current_prepared_xacts_count     |          0.0          | 
|         rollback_commit_ratio         | 0.0002477694554770677 | 
|         average_connection_age        |        0.004734       | 
| checkpoint_proactive_triggering_ratio |  0.00938967136150235  | 
|         fetched_returned_ratio        |  0.09276922373936373  | 
|                 uptime                |   0.224322521666667   | 
|             cache_hit_rate            |   0.6006356117493342  | 
|              os_cpu_count             |           1           | 
|          current_connections          |          1.0          | 
|        checkpoint_avg_sync_time       |    1.06359368331199   | 
|          search_modify_ratio          |   1007080.6984163317  | 
|             max_processes             |          137          | 
|          track_activity_size          |         137.0         | 
|           all_database_size           |    2292057.41015625   | 
|             temp_file_size            |    2694.18229367111   | 
|            current_free_mem           |        3298680        | 
|      shared_buffer_heap_hit_rate      |   36.42339765350299   | 
|                used_mem               |       36444544.0      | 
|              os_mem_total             |        3879956        | 
|  checkpoint_dirty_writing_time_window |         450.0         | 
|                ap_index               |          7.5          | 
|      shared_buffer_toast_hit_rate     |   74.11273486430062   | 
|             read_tup_speed            |    7942.47638202933   | 
|               block_size              |          8.0          | 
|            read_write_ratio           |   80.26596656844558   | 
|      shared_buffer_tidx_hit_rate      |   84.41330998248687   | 
|       shared_buffer_idx_hit_rate      |   96.54182833084825   | 
|            write_tup_speed            |    98.9516516216125   | 
|           enable_autovacuum           |          True         | 
|                is_64bit               |          True         | 
|                 is_hdd                |          True         | 
|              load_average             |   [0.62, 1.08, 1.13]  |+---------------------------------------+-----------------------+ 
p.s: The unit of storage is kB.
WARN: 
[0]. The number of CPU cores is a little small. Please do not run too high concurrency. You are recommended to set max_connections based on the number of CPU cores. If your job does not consume much CPU, you can also increase it.
BAD: 
[0]. The value of wal_buffers is too high. Generally, a large value does not bring better performance. ********************************************* Recommended Knob Settings ********************************************
+---------------------------+-----------+--------+---------+---------+
|            name           | recommend |  min   |   max   | restart | 
+---------------------------+-----------+--------+---------+---------+ 
|      random_page_cost     |    2.43   |  2.0   |   3.0   |  False  | 
|       shared_buffers      |   121256  | 72752  |  139448 |   True  |
|      max_connections      |    134    |   15   |   269   |   True  | 
|    effective_cache_size   |  2909967  | 121256 | 2909967 |  False  | 
|        wal_buffers        |    3789   |  1894  |   3789  |   True  | 
| default_statistics_target |    1000   |  100   |   1000  |  False  | 
+---------------------------+-----------+--------+---------+---------+ 
real    10m12.961s user    0m6.827s sys     0m1.076s 


在这里插入图片描述

Gauss松鼠会是汇集数据库爱好者和关注者的大本营,
大家共同学习、探索、分享数据库前沿知识和技术,
互助解决问题,共建数据库技术交流圈。
openGauss官网

http://chatgpt.dhexx.cn/article/AQAvFTRe.shtml

相关文章

亲测好用的油管音乐播放器:Tuner Mac版

Tuner for YouTube music Mac版是一款优质的youtube音乐播放器,Tuner支持快速搜索想要听的音乐,支持创建自定义播放列表、在线播放等功能,另外Tuner for YouTube music mac版还提供了画中画功能,你可以直接观看视频,还…

读论文---Clip微调---CLIP Itself is a Strong Fine-tuner

标题 摘要 Recent studies have shown that CLIP has achieved remarkable success in performing zero-shot inference while its fine-tuning performance is not satisfactory. In this paper, we identify that fine-tuning performance is significantly impacted by hyp…

Tuner工作原理详解

1、TV自动搜台原理:https://wenku.baidu.com/view/3b771f8b84868762caaed514 2、彩电自动搜台的原理与维修:http://tv.baoxiu.com/a/201001/170815.htm 3、TV Tuner搜台基础: https://wenku.baidu.com/view/bd0cefd133d4b14e85246882.html 4、TV+Tuner+Application+on+DVD+t…

Pytorch-Lightning--Tuner

Pytorch-Lightning–Tuner lr_find() 参数详解 参数名称含义默认值modelLightningModule实例train_dataloaders训练数据加载器Noneval_dataloaders验证数据加载器NonedatamoduleLightningDataModule实例Nonemin_lr学习率最小值1e-08max_lr学习率最大值1num_training测试学习…

MATLAB/simulink中PID Tuner工具箱使用方法(针对Plant cannot be linearized问题)

问题描述 在PID tuner工具箱对PID参数自动调节时,由于matlab无法将控制对象线性化,出现"Plant cannot be linearized. Use the Plant menu to create or select a new plant."问题。 操作步骤 首先选择Identify New Plant 按钮 然后选择Simu…

RK3588s imx415相机适配及ISP调优系列(三)--- RKISP调试环境配置

经过上篇的相机配置后,两个mipi相机已经可以正常出图了。其实对于rk系列如何配置mipi相机,网上已有不少相关资料均可参考借鉴。 RK3588s imx415相机适配及ISP调优系列(一) RK3588s imx415相机适配及ISP调优系列(二&…

keras_tuner库的总结【源自官网Examples】

keras_tuner库的使用,源自官网的Examples 在kerastuner中entries表示的是某个超参数对象的可取值。术语体系。有些称谓是自行杜撰的。文章中的内容或者概念需要结合原文代码多理解与多实验。 ① example1 from tensorflow import keras from tensorflow.keras i…

射频知识简介

无线通信系统中,一般包含有天线、射频前端、射频收发模块以及基带信号处理器四个部分。随着5G时代的,天线以及射频前端的需求量及价值均快速上升,射频前端是将数字信号向无线射频信号转化的基础部件,也是无线通信系统的核心组件。…

使用PID—tuner做参数整定

环境:Matlab/Simulink 2020a 仿真模型: 调节前:Kp1;Ki0;Kd0 systf([1],[100 80 17 1]); H[1]; kp1;ki0;kd0; PID_CONpid(kp,ki,kd); sys_opsys*PID_CON;sys_clfeedback(sys_op,H) step(sys_cl) 无法跟踪单位阶跃信号 使用Tune整定 虚线是当前…

解决使用pycharm安装keras-tuner后tensorflow-gpu 2.5.0无法使用的问题

解决方法 以下是我的解决方法,亲测可行,不过有点麻烦。 创建新的环境,再次安装tensorflow-gpu 2.5.0,但在之前先安装keras-tuner conda create -n new_tensorflow python3.8进入该环境 conda activate new_tensorflow下载安装cudatoolkit…

MATLAB/simulink中PID Tuner工具箱(APP)

MATLAB学习笔记系列第五篇了,这一篇重点讲一下pid tunner的使用。上一篇讲的是控制系统,MathWorks官方MATLAB/Simulink基础入门视频教程 笔记(控制系统) 那个课程到上一篇就已经完结了,这一篇主要是实际使用过程中的情…

MATLAB中关于PID的调参simulink中PID Tuner工具箱的使用

目录 一、在matlab(r2018a)中导入已知的数学模型 二、打开PID Tuner模型的命令: 三、将数学模型导入到PID Tuner中 使用PID Tuner对simulink里的PID控制器进行调参 已知数学模型为 一、在matlab(r2018a)中…

如何在 Simulink 中使用 PID Tuner 进行 PID 调参?

作者 | 安布奇责编 | 胡雪蕊出品 | CSDN(ID: CSDNnews)本文为一篇技术干货,主要讲述在Simulink如何使用PID Tuner进行PID调参。 PID调参器( PIDTuner)概述 1.1 简介 使用PID Tuner可以对Simulink模型中的PID控制器&…

使用Keras Tuner进行自动超参数调优的实用教程

在本文中将介绍如何使用 KerasTuner,并且还会介绍其他教程中没有的一些技巧,例如单独调整每一层中的参数或与优化器一起调整学习率等。Keras-Tuner 是一个可帮助您优化神经网络并找到接近最优的超参数集的工具,它利用了高级搜索和优化方法&am…

AI4DB:openGauss人工智能参数调优之X-Tuner

X-Tuner:参数调优与诊断 一、概述 二、使用准备 三、使用示例 四、获取帮助 五、命令参考 六、常见问题处理 一、概述 增量物化视图可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据刷新。与全量创建物化视图的不…

5G时代芯片之王——射频芯片

目录 什么是射频芯片? 射频芯片市场 竞争格局 什么是射频芯片? 射频( RF , Radio Frequency) , 表示可以辐射到空间的电磁频率, 频率范围从300kHz~300GHz之间。射频是一种高频交…

Tuner及工作原理介绍

Tuner的介绍 Tuner是什么? 为了提高电视信号的传输效率,减少于扰,电视信号通常都采用射频(RF)信号传输方式,即把要传输的视频或音频信号调制(作幅度调制AM或频率调制FM)到频率较高的射频载波上,从发信端发送出去&…

ADG架构搭建3 -- 一主一备ADG主备切换

本文接该系列文章的上一篇:ADG架构搭建2 – 搭建一主一备ADG架构 前言 Oracle Dataguard的角色转换包含两类:Switchover和Failover。Switchover指主备之间角色转换,主库降为备库,备库升级为主库。而failover则是指主库出现问题时…

RAC+ADG(单节点ADG)

RACADG有两种存储数据文件的形式,一个是将DG的数据文件放在ASM上,另一个是将数据文件放在本地磁盘上 本实验做的是数据放在本地磁盘上。 在搭建RACDG之前,请确保RAC是没有问题的 1.检查集群状态 grid用户下执行: crsctl status r…

ADG架构搭建1--Oracle安装

本系列文章将会带领大家从零完成一个Oracle ADG架构的搭建。 本片文章为系列文章的第一篇。 前言 本文将带领大家完成两台服务的Oracle安装。 正文 版本说明: Oracle版本 Oracle Database 12c Release 1 (12.1.0.2.0) - Enterprise Edition 操作系统版本 Red Hat …