【基于openGauss5.0.0简单使用DBMind】

2023-12-11 01:30

本文主要是介绍【基于openGauss5.0.0简单使用DBMind】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于openGauss5.0.0简单使用DBMind

    • 一、环境说明
    • 二、初始化tpch测试数据
    • 三、使用DBMind索引推荐功能
    • 四、使用DBMind实现SQL优化功能

一、环境说明

  1. 虚拟机:virtualbox
  2. 操作系统:openEuler 20.03 TLS
  3. 数据库:openGauss-5.0.0
  4. DBMind:dbmind-5.0.0
    注意环境是基于x86架构

二、初始化tpch测试数据

  1. 使用普通用户如omm登录服务器

  2. 执行如下命令下载测试数据库:

    git clone https://gitee.com/xzp-blog/tpch-kit.git
    
  3. 进入dbgen目录下,生成makefile文件:

    cd /opt/software/tpch-kit/dbgen/
    make -f Makefile
    
  4. 连接openGauss数据库,创建tpch的database:

    gsql -d postgres -p 15432 -r
    openGauss=# CREATE DATABASE tpch; 
    openGauss=# \q
    
  5. 创建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}
    
  6. 生成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.
    
  7. 编写导入数据脚本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. 导入数据到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...
    
  9. 检验数据是否已完成导入:

    gsql -d tpch -p 15432 -r
    tpch=# select count(*) from supplier;
    

    查看了supplier表的总记录数为:10000条。
    感兴趣可以全部查看8张表各自的总记录数,如下所示:

    至此,已完后TPCH测试数据的导入工作。

  10. 生成相关查询语句,为避免对原有查询语句脚本产生污染,将其复制到queries目录下:

    cd /opt/software/tpch-kit/dbgen
    cp dists.dss queries/
    cp qgen queries/
    cd queries/
    
  11. 编写生成查询语句脚本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
    
  12. 执行脚本genda.sh:

    cd /opt/software/tpch-kit/dbgen
    sh genda.sh
    
  13. 验证生成的查询语句:

    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语句
    至此,已完成了查询语句的生成。

  14. 为了测试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索引推荐功能

  1. 第一种使用方式:
    • 以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)
      
  2. 第二种使用方式:
    • 登录到DBMind的管理界面中,输入相关SQL语句:

      select * from customer where c_acctbal > 6819.74 order by c_acctbal desc limit 10;
      

      在这里插入图片描述

    • 点击【Advise Index】按钮,正常情况下会看到如下内容:
      在这里插入图片描述

四、使用DBMind实现SQL优化功能

  1. 登录到DBMind的管理界面中,输入相关SQL语句:
    在这里插入图片描述

其他的有关DBMind的功能,大家感兴趣,可自行测试,希望对您有所帮助~~~~~

这篇关于【基于openGauss5.0.0简单使用DBMind】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478978

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi