【基于openGauss5.0.0简单使用DBMind】
基于openGauss5.0.0简单使用DBMind
- 一、环境说明
- 二、初始化tpch测试数据
- 三、使用DBMind索引推荐功能
- 四、使用DBMind实现SQL优化功能
一、环境说明
- 虚拟机:virtualbox
- 操作系统:openEuler 20.03 TLS
- 数据库:openGauss-5.0.0
- DBMind:dbmind-5.0.0
注意
:环境是基于x86架构
二、初始化tpch测试数据
-
使用普通用户如
omm
登录服务器 -
执行如下命令下载测试数据库:
git clone https://gitee.com/xzp-blog/tpch-kit.git
-
进入dbgen目录下,生成makefile文件:
cd /opt/software/tpch-kit/dbgen/ make -f Makefile
-
连接openGauss数据库,创建tpch的database:
gsql -d postgres -p 15432 -r openGauss=# CREATE DATABASE tpch; openGauss=# \q
-
创建8张测试表,执行如下命令:
cd /opt/software/tpch-kit/dbgen gsql -d tpch -f dss.ddl
执行完成后,登录数据库查看,会看到如下8张表:
List of relationsSchema | Name | Type | Owner | Storage --------+----------+-------+-------+----------------------------------public | customer | table | omm | {orientation=row,compression=no}public | lineitem | table | omm | {orientation=row,compression=no}public | nation | table | omm | {orientation=row,compression=no}public | orders | table | omm | {orientation=row,compression=no}public | part | table | omm | {orientation=row,compression=no}public | partsupp | table | omm | {orientation=row,compression=no}public | region | table | omm | {orientation=row,compression=no}public | supplier | table | omm | {orientation=row,compression=no}
-
生成8张表测试数据,执行如下命令:
cd /opt/software/tpch-kit/dbgen ./dbgen -vf -s 1
执行结果如下:
[omm@opengauss01 dbgen]$ ./dbgen -vf -s 1 TPC-H Population Generator (Version 2.17.3) Copyright Transaction Processing Performance Council 1994 - 2010 Generating data for suppliers table/ Preloading text ... 100% done. Generating data for customers tabledone. Generating data for orders/lineitem tablesdone. Generating data for part/partsupplier tablesdone. Generating data for nation tabledone. Generating data for region tabledone.
-
编写导入数据脚本LoadData.sh:
for i in `ls *.tbl`; dotable=${i/.tbl/}echo "Loading $table..."sed 's/|$//' $i > /opt/software/tmp/$igsql tpch -p 15432 -q -c "TRUNCATE $table"gsql tpch -p 15432 -c "\\copy $table FROM '/opt/software/tmp/$i' CSV DELIMITER '|'" done
注意
:当前数据库端口为15432
授予执行权限:[omm@opengauss01 dbgen]$ chmod +x LoadData.sh
-
导入数据到8张表中,执行导入脚本LoadData.sh:
[omm@opengauss01 dbgen]$ sh LoadData.sh
执行结果如下:
Loading customer... Loading lineitem... Loading nation... Loading orders... Loading partsupp... Loading part... Loading region... Loading supplier...
-
检验数据是否已完成导入:
gsql -d tpch -p 15432 -r tpch=# select count(*) from supplier;
查看了supplier表的总记录数为:10000条。
感兴趣可以全部查看8张表各自的总记录数,如下所示:至此,已完后TPCH测试数据的导入工作。
-
生成相关查询语句,为避免对原有查询语句脚本产生污染,将其复制到queries目录下:
cd /opt/software/tpch-kit/dbgen cp dists.dss queries/ cp qgen queries/ cd queries/
-
编写生成查询语句脚本genda.sh,内容如下:
cd /opt/software/tpch-kit/dbgen/queries vim genda.sh
添加如下内容:
for i in {1..22}; do./qgen -d $i>$i_new.sql./qgen -d $i_new | sed 's/limit -1//' | sed 's/limit 100//' | sed 's/limit 10//' | sed 's/limit 20//' | sed 's/day (3)/day/' > queries.sql done
-
执行脚本genda.sh:
cd /opt/software/tpch-kit/dbgen sh genda.sh
-
验证生成的查询语句:
cd /opt/software/tpch-kit/dbgen/queries ls -l queries.sql
结果如下:
[omm@opengauss01 queries]$ ls -l queries.sql -rw-r--r-- 1 omm dbgrp 12K Aug 29 23:49 queries.sql
感兴趣可以查看下queries.sql内容,看下生成了哪些SQL语句
至此,已完成了查询语句的生成。 -
为了测试AP性能,以omm用户上传tpch_ap_data.sql(可点击下载)到/opt/software目录下,然后执行如下命令执行该sql文件:
gsql -d tpch -p 15432 -r -f /opt/software/tpch_ap_data.sql > /opt/software/tpch_ap_data.sql
执行完成后,整个tpch数据库中相关表如下:
tpch=# \dList of relationsSchema | Name | Type | Owner | Storage --------+-----------------------------------+----------+-------+----------------------------------public | address_dimension | table | omm | {orientation=row,compression=no}public | address_dimension_address_key_seq | sequence | omm |public | customer | table | omm | {orientation=row,compression=no}public | date_dimension | table | omm | {orientation=row,compression=no}public | lineitem | table | omm | {orientation=row,compression=no}public | litemall_orders | table | omm | {orientation=row,compression=no}public | nation | table | omm | {orientation=row,compression=no}public | orders | table | omm | {orientation=row,compression=no}public | part | table | omm | {orientation=row,compression=no}public | partsupp | table | omm | {orientation=row,compression=no}public | region | table | omm | {orientation=row,compression=no}public | supplier | table | omm | {orientation=row,compression=no}public | user_dimension | table | omm | {orientation=row,compression=no}public | user_dimension_user_key_seq | sequence | omm |
三、使用DBMind索引推荐功能
- 第一种使用方式:
- 以gsql登录到数据库中
gsql -d tpch -p 15432 -r
- 执行如下命令查看索引推荐
结果如下:select * from gs_index_advise(' SELECT ad.province AS province, SUM(o.actual_price) AS GMVFROM litemall_orders o,address_dimension ad,date_dimension ddWHERE o.address_key = ad.address_keyAND o.add_date = dd.date_keyAND dd.year = 2020AND dd.month = 3GROUP BY ad.provinceORDER BY SUM(o.actual_price) DESC');
schema | table | column | indextype --------+-------------------+----------------------+-----------public | litemall_orders | address_key,add_date |public | address_dimension | |public | date_dimension | year | (3 rows)
- 以gsql登录到数据库中
- 第二种使用方式:
-
登录到DBMind的管理界面中,输入相关SQL语句:
select * from customer where c_acctbal > 6819.74 order by c_acctbal desc limit 10;
-
点击【Advise Index】按钮,正常情况下会看到如下内容:
-
四、使用DBMind实现SQL优化功能
- 登录到DBMind的管理界面中,输入相关SQL语句:
其他的有关DBMind的功能,大家感兴趣,可自行测试,希望对您有所帮助~~~~~
相关文章:

【基于openGauss5.0.0简单使用DBMind】
基于openGauss5.0.0简单使用DBMind 一、环境说明二、初始化tpch测试数据三、使用DBMind索引推荐功能四、使用DBMind实现SQL优化功能 一、环境说明 虚拟机:virtualbox操作系统:openEuler 20.03 TLS数据库:openGauss-5.0.0DBMind:d…...

[递归回溯]连接卡片最短路径
小游戏 题目描述 一天早上,你起床的时候想:“我编程序这么牛,为什么不能靠这个挣点银子呢?”因此你决定编写一个小游戏。 游戏在一个分割成w * h个长方格子的矩形板上进行。如图所示,每个长方格子上可以有一张游戏…...

初识人工智能,一文读懂强化学习的知识文集(5)
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...

视频封面提取:精准截图,如何从指定时长中提取某一帧图片
在视频制作和分享过程中,一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间,那么如何智化能批量提取呢?现在一起来看下云炫AI智…...
Shopify 开源 WebAssembly 工具链 Ruvy
最近,Spotify 开源了Ruvy,一个 WebAssembly 工具链,能够将 Ruby 代码转换为 Wasm 模块。Ruvy 基于ruby.wasm, 用 Rust 实现,提升了性能并简化了 Wasm 模块的执行。 Ruvy 利用了ruby.wasm提供的 Ruby 解释器模块,并使用wasi-vfs (WASI 虚拟文件系统)将其与所有指定的 Rub…...

zxjy008- 项目集成Swagger
Swagger可以生成在线文档,还可以进行接口测试。 1、创建common模块(maven类型) 为了让所有的微服务子子模块都可以使用,可以在guli_parent父工程下面创建公共模块 1.1 在guli_parent父工程下面创建公共模块 配置: groupId:com…...

使用linux CentOS本地部署SQL Server数据库
🌈个人主页:聆风吟 🔥系列专栏:数据结构、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…...

理解基于 Hadoop 生态的大数据技术架构
转眼间,一年又悄然而逝,时光荏苒,岁月如梭。当回首这段光阴,不禁感叹时间的匆匆,仿佛只是一个眨眼的瞬间,一年的旅程已成为过去,而如今又到了画饼的时刻了 ! 基于 Hadoop 生态的大数…...

【Go】Go语言基础内容
变量声明: 变量声明:在Go中,变量必须先声明然后再使用。声明变量使用 var 关键字,后面跟着变量名和类型,如下所示: var age int这行代码声明了一个名为 age 的整数变量。 变量初始化:您可以在声…...
HP-UNIX 系统安全基线 安全加固操作
目录 账号管理、认证授权 账号 ELK-HP-UX-01-01-01 ELK -HP-UX-01-01-02 ELK -HP-UX-01-01-03 ELK-HP-UX-01-01-04 ELK-HP-UX-01-01-05 口令 ELK-HP-UX-01-02-01 ELK-HP-UX-01-02-02 ELK-HP…...

第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件
信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…...

【利用二手车数据进行可视化分析】
利用二手车数据进行可视化分析 查看原始数据去除重复数据需求分析1.统计全国总共有多少量二手车,用KPI图进行展示2.统计安徽总共有多少量二手车,用KPI图进行展示3.统计合肥总共有多少量二手车,用KPI图进行展示4.取最贵的10辆二手车信息&#…...

快速测试 3节点的redis sentinel集群宕机2个节点以后是否仍能正常使用
有同事问我,三个redis sentinel节点,宕机两个节点以后,是否还能够正常的通过redis sentinel正常访问redis的数据。我想了想,理论上是可以的,但是我没试过,今天有时间就测试了一下。搭建环境和测试代码的过程…...
echarts词云图echarts-wordcloud使用方法
1、echarts5.0以下的版本使用 echarts-wordcloud 1.0 的词云 1. 安装 wordCloud 1.0 依赖包npm install echarts-wordcloud12. man.js 注入import echarts-wordcloud 2、echarts5.0及以上的下载 echarts-wordcloud 2.0 版本 注意:npm install echarts-wordcloud …...

二叉树的OJ练习(二)
通过前序遍历数组构建二叉树 题目:通过前序遍历的数组(ABD##E#H##CF##G##)构建二叉树 TreeNode* TreeCreat(char* a,int* pi) {if(a[*pi] #){(*pi);return NULL; }TreeNode* root (TreeNode*)malloc(sizeof(TreeNode));if(root NULL){p…...

uni-app 微信小程序之自定义navigationBar顶部导航栏
文章目录 1. 实现效果2. App.vue3. pages.json 配置自定义4. 顶部导航栏 使用 微信小程序自定义 navigationBar 顶部导航栏,兼容适配所有机型 1. 实现效果 2. App.vue 在App.vue 中,设置获取的 StatusBar,CustomBar 高度(实现适配…...

前端入门:HTML初级指南,网页的简单实现!
代码部分: <!DOCTYPE html> <!-- 上方为DOCTYPE声明,指定文档类型为HTML --> <html lang"en"> <!-- html标签为整个页面的根元素 --> <head> <!-- title标签用于定义文档标题 --> <title>初始HT…...

低多边形3D建模石头材质纹理贴图
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格…...
【华为OD题库-081】最长的元音子串长度-Java
题目 题目描述: 定义当一个字符串只有元音字母一(a,e,i,o,u,A,E,l,O,U)组成, 称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0, 字符串中任意一个连续字符组成…...
第9节:Vue3 指令
如何在UniApp中使用Vue3的指令: <template> <view> <!-- 使用指令 --> <text v-show"isVisible" click"toggleVisibility">点击隐藏/显示</text> <button v-on:click"incrementCount">点击…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...

C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...