【数据库评测】多表联合join零耗时——翰云数据库在国产龙芯硬件上的表现

简介: 【数据库评测】多表联合join零耗时——翰云数据库在国产龙芯硬件上的表现

一、评测结果


  • 64核256g内存的机器上,在ssb1000g数据集下,翰云数据库(cloudwave)在维度表与事实表之间做多表联合join时,查询耗时几乎为零,CPU占用几乎为零。

备注:

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



二、评测环境


  • 硬件环境:4台 64核256g 龙芯服务器(组成4节点的集群),3.5TB nvme 固态硬盘
  • 软件环境
  1. 操作系统:Loongnix-Server Linux release 8.4.0


image.png

  1. 内核版本
  2. 各个服务器节点ssh互信任
  3. openjdk17(龙芯cpu支持的最高推荐jdk,支持 vector api)、hadoop 3.2.2(作为cloudwave 的分布式存储,副本数=3)



  • 软件版本:Cloudwave 4.0(最新版在2023年5月份发版)
  • 评测数据集:ssb1000
表名 行数 说明
lineorder 60 亿 SSB 商品订单表
customer 3000 万 SSB 客户表
part 200 万 SSB 零部件表
supplier 200 万 SSB 供应商表
dates 2556 日期表




三、评测SQL


  • 评测SQL1:select count(*) from lineorder,customer where lo_custkey = c_custkey;
  • 评测SQL2:select count(*) from lineorder,customer,supplier where lo_custkey = c_custkey and lo_suppkey = s_suppkey;


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


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



三、评测方法


  • 执行100轮SQL1和SQL2的测试脚本,获得sql的平均耗时


  • 观察最大CPU占用




四、开始评测

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


image.png



2.执行SQL1测试


image.png




./test_join1.sh 
## 脚本内容见附录
  • 可以看到cloudwave CPU最大占用是20%
  1. 分析SQL结果


image.png

./query_result.sh 
  • 可以看到cloudwave SQL1的耗时0.032秒左右。(天呐!lineorder(数据量60亿),join customer(数据量3000万),竟然只需要0.032秒)
  1. 执行SQL2测试


image.png

./test_join2.sh 
## 脚本内容见附录
  • 可以看到CPU最大占用是27.4%
  1. 分析SQL结果


image.png


./query_result.sh
  • 可以看到cloudwave SQL2 的耗时也是0.041秒左右。(天呐!!!lineorder(数据量60亿),join  customer(数据量3000万),再join supplier(数据量200万)竟然也只需要0.041秒。简直像开了挂——官方说:我们对于事实表与维度表多表联合join的时间应该为零




[附录]


  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


2.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;


4.sql_join_2.sql文件内容

select count(*) from lineorder,customer,supplier where lo_custkey = c_custkey and lo_suppkey = s_suppkey;


5.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


6.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


目录
相关文章
|
1月前
|
运维 数据库 数据库管理
云数据库问题之阿里云在运营商领域数据库替换的整体解决方案要如何实现
云数据库问题之阿里云在运营商领域数据库替换的整体解决方案要如何实现
|
1月前
|
Oracle 数据管理 关系型数据库
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
国产数据库的发展趋势是什么?
【8月更文挑战第26天】国产数据库的发展趋势是什么?
56 15
|
1月前
|
SQL 数据挖掘 数据库
数据库join类型有哪些?
【8月更文挑战第2天】
94 17
数据库join类型有哪些?
|
1月前
|
关系型数据库 分布式数据库 数据库
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
|
2月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版的体验评测
我有幸参与了云原生数据库PolarDB MySQL版的体验评测。在这次评测中,我主要关注了以下几个方面:产品控制台操作体验、产品文档阅读体验、产品API使用体验、控制台产品监控页面以及生态周边。
51 11
云原生数据库PolarDB MySQL版的体验评测
|
1月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版深度评测报告
作为一名开发人员,在日常工作中频繁与数据库打交道,对于数据库的性能、灵活性和易用性有着极高的要求。此次,我有幸对阿里云自主研发的云原生数据库PolarDB MySQL版进行了深入评测,旨在了解其是否能够满足现代应用的高性能、高可用性和弹性扩展需求。
48 4
|
2月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
6775 2
|
2月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版评测报告
云原生数据库PolarDB MySQL版评测报告
49 4