收藏

779.【数据库评测】多表联合join零耗时——翰云数据库在国产

2023-08-31  本文已影响0人  七镜

一、评测结果

备注:

数据库 CPU 数据集 SQL1响应时间(ms) SQL2响应时间(ms) SQL1 CPU 最大占用率 SQL2 CPU 最大占用率
翰云数据库(cloudwave) 龙芯(loongson) ssb1000 32 41 0.31%(20%/6400%) 0.42%(27.4%/6400%)

二、评测环境

表名 行数 说明
lineorder 60 亿 SSB 商品订单表
customer 3000 万 SSB 客户表
part 200 万 SSB 零部件表
supplier 200 万 SSB 供应商表
dates 2556 日期表

三、评测SQL

第1条SQL是将lineorder这张事实表与customer这张维度表join,加count()是迫使数据库必须把所有的记录都join上。
第2条SQL是将lineorder这张事实表与customer、supplier 这两张维度join,加count(
)同样是迫使数据库必须把所有的记录都join上。

三、评测方法

四、开始评测

  1. 启动并导入ssb1000数据 到cloudwave


  2. 执行SQL1测试


./test_join1.sh 
## 脚本内容见附录
  1. 分析SQL结果


./query_result.sh 
  1. 执行SQL2测试


./test_join2.sh 
## 脚本内容见附录
  1. 分析SQL结果


./query_result.sh 

[附录]

  1. test_join1.sh脚本
#!/bin/bash
# Program:
#       test ssb
# History:
# 2023/03/17    junfenghe.cloud@qq.com  version:0.0.1


for ((i=1; i<30; i++))
do

    cat sql_join_1.sql |./cplus.sh > n${i}.txt

done
#cat sql_ssb.sql |./cplus.sh > n1.txt
  1. test_join2.sh脚本
#!/bin/bash
# Program:
#       test ssb
# History:
# 2023/03/17    junfenghe.cloud@qq.com  version:0.0.1


for ((i=1; i<30; i++))
do

    cat sql_join_2.sql |./cplus.sh > n${i}.txt

done
#cat sql_ssb.sql |./cplus.sh > n1.txt
  1. sql_join_1.sql文件内容
use ssb1000;
select count(*) from lineorder,customer where lo_custkey = c_custkey;
  1. sql_join_2.sql文件内容
select count(*) from lineorder,customer,supplier where lo_custkey = c_custkey and lo_suppkey = s_suppkey;
  1. query_result.sh脚本内容
#!/bin/bash
# Program:
#       list query time
# History:
# 2023/05/12    junfenghe.cloud@qq.com  version:0.0.1

path=/bin:/sbinz:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export path

./analysis.sh cloudwave "$(ls n*txt)" + > query_time.txt


echo "desc history;" | ./cplus.sh > jobinfo.txt
  1. analysis.sh脚本内容
#!/bin/bash
#Program:
#       analysis cloudwave/starrocks logs of base compute
#History:
#2023/02/20     junfenghe.cloud@qq.com  version:0.0.1

path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin:~/bin
export path



suff="(s)#####"

if [ -z "${1}" ]
then

        echo "Please input database'name"
        exit -1

fi

if [ -z "$2" ]
then

        echo "Please input times of scanner"
        exit -f
fi

if [ -n "${3}" ]
then
        suff=${3}
fi

for current in ${2}
do
        result_time=""

        if [ "${1}" == "starrocks" ]
        then
            for time in $( cat ${current} | grep sec  | awk -F '('  '{print $2}' | awk -F ' ' '{print $1}' )
            do
                result_time="${result_time}${time}${suff}"
            done
        elif [ "${1}" == "cloudwave" ]
        then
            for time in $( cat ${current} | grep Elapsed | awk '{print $2}'| sed 's/:/*60+/g'| sed 's/+00\*60//g ; s/+0\*60//g ; s/^0\*60+//g' )
            do
                result_time="${result_time}${time}${suff}"
            done
        fi

        echo ${result_time%${suff}*}

done


exit 0
# echo $1
# echo $#
# echo $?
# echo $!
# echo $0
上一篇 下一篇

猜你喜欢

热点阅读