PolarDB查询处理与扩容

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: 体验云原生PolarDB的手动扩缩容特性;了解云原生PolarDB的自动扩缩容配置方法及相关参数,体验不同配置下执行TPCH的性能差异

PolarDB查询处理与扩容

1. 创建实验资源

在实验开始之前,您需要创建相关实验资源。

  1. 在实验室页面,单击创建资源。
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

说明:资源创建过程需要3~5分钟。

2. 准备实验环境

本步骤指导您如何通过控制台创建数据库账号、数据库和添加白名单。

  1. 双击打开远程桌面的Chromium网页浏览器
  2. 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录
  3. 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库PolarDB控制台。
https://polardb.console.aliyun.com/
  1. 集群列表页面顶部菜单栏中,切换资源所在地域。

说明:您可在云产品资源列表中查看PolarDB资源所在的地域。

  1. 集群列表页面,找到您的PolarDB_1实例,单击实例ID

说明:您可在云产品资源列表中查看实验室分配的PolarDB_1实例ID。

  1. 在左侧导航栏中,选择配置与管理>集群白名单

  1. 集群白名单页面的IP列表区域,单击default分组右侧的配置

  1. 配置白名单面板,将白名单内IP地址修改为0.0.0.0/0,单击确定

  1. 在左侧导航栏中,选择配置与管理>账号管理

  1. 账号管理页面,单击创建账号

  1. 创建账号对话框中,参考说明配置账号信息,单击确定

参数说明:

  • 数据库账号:输入数据库账号名称,例如test_user
  • 账号类型:选择高权限账号
  • 密码:输入账号密码,例如Password123
  • 确认密码:再次输入账号密码。

  1. 在左侧导航栏中,选择配置与管理>数据库管理

  1. 数据库管理页面,单击创建数据库

  1. 创建数据库对话框中,参考说明配置数据库信息,单击创建

参数说明:

  • 数据库(DB)名称:输入数据库名称,例如tpch_100
  • 支持字符集:默认设为utf8mb4
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符。

3. 准备TPCH测试代码/数据

  1. 在实验室右侧功能栏中,单击图标,切换至Web Terminal,自动连接到云服务器ECS。

  1. 进入TPC官网注册账号,下载TPCH测试代码。

说明:本实验为了方便用户下载TPCH测试代码,您可在ECS终端中直接执行如下命令,下载TPCH测试代码。

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/tpc-h-tool.zip
  1. 执行如下命令,安装mysql客户端,unzip,make,gcc。
# centos环境下
sudo yum install mysql unzip make gcc -y
  1. 执行如下命令,解压tpc-h-tool.zip。
unzip tpc-h-tool.zip
  1. 依次执行如下命令,进入dbgen目录,复制makefile文件,编辑makefile文件。
cd TPC-H\ V3.0.1/dbgen
cp makefile.suite makefile
vim makefile

  1. 在makefile文件内按i键进入编辑模式,根据如下,修改makefile文件中的CC、DATABASE、MACHINE、WORKLOAD等参数定义。修改完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
################
 ## CHANGE NAME OF ANSI COMPILER HERE
 ################
 CC      = gcc
 # Current values for DATABASE are: INFORMIX, DB2, ORACLE,
 #                                  SQLSERVER, SYBASE, TDAT (Teradata)
 # Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS,
 #                                  SGI, SUN, U2200, VMS, LINUX, WIN32
 # Current values for WORKLOAD are:  TPCH
 DATABASE= MYSQL
 MACHINE = LINUX
 WORKLOAD = TPCH

  1. 执行如下命令,修改tpcd.h头文件。
vim tpcd.h
  1. 在tpcd.h头文件内按i键进入编辑模式,在文件内容尾部添加如下宏定义,添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
#ifdef MYSQL
#define GEN_QUERY_PLAN ""
#define START_TRAN "START TRANSACTION"
#define END_TRAN "COMMIT"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "limit %d;\n"
#define SET_DBASE "use %s;\n"
#endif

  1. 在dbgen目录下,执行如下面命令,对文件进行编译。编译完成后,当前目录下会生成两个可执行文件:包括数据生成工具dbgen和SQL生成工具qgen。由于不同的seed生成的查询不同,为了结果的可重复性,建议使用官方提供的22个查询。
make
  1. 生成一个仓库的测试数据.
./dbgen -s 1

  1. 执行如下命令,下载官方的22个查询。
wget https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/145463/cn_zh/1575017874050/22%E4%B8%AA%E6%9F%A5%E8%AF%A2.zip
  1. 执行如下命令,解压查询文件到queries目录。
unzip -j 22个查询.zip -d /root/TPC-H\ V3.0.1/dbgen/queries


4. TPCH测试

本步骤测试规格为2核4GB的云数据库PolarDB,进行TPCH测试查询22个SQL,云数据库PolarDB的性能。

  1. 执行如下命令,在dbgen目录下,编辑创建表脚本dss.ddl。
vim dss.ddl
  1. 在dss.ddl脚本内按下gg,再按下dG删除脚本中所有内容。按i键进入编辑模式,将如下内容添加到dss.ddl脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。

说明:请您先删除脚本中所有内容后再根据实验手册添加创建表的脚本内容。

-- Sccsid:     @(#)dss.ddl    2.1.8.1
drop database if exists tpch_100;
create database tpch_100;
use tpch_100;
CREATE TABLE NATION  ( N_NATIONKEY  INTEGER NOT NULL  ,
                            N_NAME       CHAR(25) NOT NULL,
                            N_REGIONKEY  INTEGER NOT NULL,
                            N_COMMENT    VARCHAR(152));
CREATE TABLE REGION  ( R_REGIONKEY  INTEGER NOT NULL  ,
                            R_NAME       CHAR(25) NOT NULL,
                            R_COMMENT    VARCHAR(152));
CREATE TABLE PART  ( P_PARTKEY     INTEGER NOT NULL  ,
                          P_NAME        VARCHAR(55) NOT NULL,
                          P_MFGR        CHAR(25) NOT NULL,
                          P_BRAND       CHAR(10) NOT NULL,
                          P_TYPE        VARCHAR(25) NOT NULL,
                          P_SIZE        INTEGER NOT NULL,
                          P_CONTAINER   CHAR(10) NOT NULL,
                          P_RETAILPRICE DECIMAL(15,2) NOT NULL,
                          P_COMMENT     VARCHAR(23) NOT NULL );
CREATE TABLE SUPPLIER ( S_SUPPKEY     INTEGER NOT NULL  ,
                             S_NAME        CHAR(25) NOT NULL,
                             S_ADDRESS     VARCHAR(40) NOT NULL,
                             S_NATIONKEY   INTEGER NOT NULL,
                             S_PHONE       CHAR(15) NOT NULL,
                             S_ACCTBAL     DECIMAL(15,2) NOT NULL,
                             S_COMMENT     VARCHAR(101) NOT NULL);
CREATE TABLE PARTSUPP ( PS_PARTKEY     INTEGER NOT NULL  ,
                             PS_SUPPKEY     INTEGER NOT NULL,
                             PS_AVAILQTY    INTEGER NOT NULL,
                             PS_SUPPLYCOST  DECIMAL(15,2)  NOT NULL,
                             PS_COMMENT     VARCHAR(199) NOT NULL );
CREATE TABLE CUSTOMER ( C_CUSTKEY     INTEGER NOT NULL  ,
                             C_NAME        VARCHAR(25) NOT NULL,
                             C_ADDRESS     VARCHAR(40) NOT NULL,
                             C_NATIONKEY   INTEGER NOT NULL,
                             C_PHONE       CHAR(15) NOT NULL,
                             C_ACCTBAL     DECIMAL(15,2)   NOT NULL,
                             C_MKTSEGMENT  CHAR(10) NOT NULL,
                             C_COMMENT     VARCHAR(117) NOT NULL);
CREATE TABLE ORDERS  ( O_ORDERKEY       INTEGER NOT NULL  ,
                           O_CUSTKEY        INTEGER NOT NULL,
                           O_ORDERSTATUS    CHAR(1) NOT NULL,
                           O_TOTALPRICE     DECIMAL(15,2) NOT NULL,
                           O_ORDERDATE      DATE NOT NULL,
                           O_ORDERPRIORITY  CHAR(15) NOT NULL,  
                           O_CLERK          CHAR(15) NOT NULL, 
                           O_SHIPPRIORITY   INTEGER NOT NULL,
                           O_COMMENT        VARCHAR(79) NOT NULL);
CREATE TABLE LINEITEM ( L_ORDERKEY    INTEGER NOT NULL  ,
                             L_PARTKEY     INTEGER NOT NULL,
                             L_SUPPKEY     INTEGER NOT NULL,
                             L_LINENUMBER  INTEGER NOT NULL,
                             L_QUANTITY    DECIMAL(15,2) NOT NULL,
                             L_EXTENDEDPRICE  DECIMAL(15,2) NOT NULL,
                             L_DISCOUNT    DECIMAL(15,2) NOT NULL,
                             L_TAX         DECIMAL(15,2) NOT NULL,
                             L_RETURNFLAG  CHAR(1) NOT NULL,
                             L_LINESTATUS  CHAR(1) NOT NULL,
                             L_SHIPDATE    DATE NOT NULL,
                             L_COMMITDATE  DATE NOT NULL,
                             L_RECEIPTDATE DATE NOT NULL,
                             L_SHIPINSTRUCT CHAR(25) NOT NULL,
                             L_SHIPMODE     CHAR(10) NOT NULL,
                             L_COMMENT      VARCHAR(44) NOT NULL);

  1. 执行如下命令,创建导入数据脚本load.ddl。
vim load.ddl
  1. 在load.ddl脚本中按i键进入编辑模式,将如下内容添加到load.ddl脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
load data local INFILE 'customer.tbl' INTO TABLE customer FIELDS TERMINATED BY '|';
load data local INFILE 'region.tbl' INTO TABLE region FIELDS TERMINATED BY '|';
load data local INFILE 'nation.tbl' INTO TABLE nation FIELDS TERMINATED BY '|';
load data local INFILE 'supplier.tbl' INTO TABLE supplier FIELDS TERMINATED BY '|';
load data local INFILE 'part.tbl' INTO TABLE part FIELDS TERMINATED BY '|';
load data local INFILE 'partsupp.tbl' INTO TABLE partsupp FIELDS TERMINATED BY '|';
load data local INFILE 'orders.tbl' INTO TABLE orders FIELDS TERMINATED BY '|';
load data local INFILE 'lineitem.tbl' INTO TABLE lineitem FIELDS TERMINATED BY '|';

  1. 执行如下命令,修改主外键关系脚本dss.ri。
vim dss.ri
  1. 在dss.ri脚本内按下gg,再按下dG删除脚本中所有内容。按i键进入编辑模式,将如下内容添加到dss.ri脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。

说明:请您先删除脚本中所有内容后再根据手册添加主外键关系的脚本内容。

-- Sccsid:     @(#)dss.ri    2.1.8.1
-- tpch_100 Benchmark Version 8.0
use tpch_100;
-- ALTER TABLE tpch_100.REGION DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.NATION DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.PART DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.SUPPLIER DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.PARTSUPP DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.ORDERS DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.LINEITEM DROP PRIMARY KEY;
-- ALTER TABLE tpch_100.CUSTOMER DROP PRIMARY KEY;
-- For table REGION
ALTER TABLE tpch_100.REGION
ADD PRIMARY KEY (R_REGIONKEY);
-- For table NATION
ALTER TABLE tpch_100.NATION
ADD PRIMARY KEY (N_NATIONKEY);
ALTER TABLE tpch_100.NATION
ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references tpch_100.REGION(R_REGIONKEY);
COMMIT WORK;
-- For table PART
ALTER TABLE tpch_100.PART
ADD PRIMARY KEY (P_PARTKEY);
COMMIT WORK;
-- For table SUPPLIER
ALTER TABLE tpch_100.SUPPLIER
ADD PRIMARY KEY (S_SUPPKEY);
ALTER TABLE tpch_100.SUPPLIER
ADD FOREIGN KEY SUPPLIER_FK1 (S_NATIONKEY) references tpch_100.NATION(N_NATIONKEY);
COMMIT WORK;
-- For table PARTSUPP
ALTER TABLE tpch_100.PARTSUPP
ADD PRIMARY KEY (PS_PARTKEY,PS_SUPPKEY);
COMMIT WORK;
-- For table CUSTOMER
ALTER TABLE tpch_100.CUSTOMER
ADD PRIMARY KEY (C_CUSTKEY);
ALTER TABLE tpch_100.CUSTOMER
ADD FOREIGN KEY CUSTOMER_FK1 (C_NATIONKEY) references tpch_100.NATION(N_NATIONKEY);
COMMIT WORK;
-- For table LINEITEM
ALTER TABLE tpch_100.LINEITEM
ADD PRIMARY KEY (L_ORDERKEY,L_LINENUMBER);
COMMIT WORK;
-- For table ORDERS
ALTER TABLE tpch_100.ORDERS
ADD PRIMARY KEY (O_ORDERKEY);
COMMIT WORK;
-- For table PARTSUPP
ALTER TABLE tpch_100.PARTSUPP
ADD FOREIGN KEY PARTSUPP_FK1 (PS_SUPPKEY) references tpch_100.SUPPLIER(S_SUPPKEY);
COMMIT WORK;
ALTER TABLE tpch_100.PARTSUPP
ADD FOREIGN KEY PARTSUPP_FK2 (PS_PARTKEY) references tpch_100.PART(P_PARTKEY);
COMMIT WORK;
-- For table ORDERS
ALTER TABLE tpch_100.ORDERS
ADD FOREIGN KEY ORDERS_FK1 (O_CUSTKEY) references tpch_100.CUSTOMER(C_CUSTKEY);
COMMIT WORK;
-- For table LINEITEM
ALTER TABLE tpch_100.LINEITEM
ADD FOREIGN KEY LINEITEM_FK1 (L_ORDERKEY)  references tpch_100.ORDERS(O_ORDERKEY);
COMMIT WORK;
ALTER TABLE tpch_100.LINEITEM
ADD FOREIGN KEY LINEITEM_FK2 (L_PARTKEY,L_SUPPKEY) references 
        tpch_100.PARTSUPP(PS_PARTKEY,PS_SUPPKEY);
COMMIT WORK;
use tpch_100;
alter table CUSTOMER    rename to customer ;
alter table LINEITEM    rename to lineitem ;
alter table NATION    rename to nation   ;
alter table ORDERS    rename to orders   ;
alter table PART    rename to part     ;
alter table PARTSUPP    rename to partsupp ;
alter table REGION    rename to region   ;
alter table SUPPLIER    rename to supplier ;

  1. 执行如下命令,连接PolarDB_1集群。

说明:您需要将改为云数据库PolarDB_1实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_1实例的集群私网地址。你需要将<数据库账号>和<数据库密码>改为第二节中创建的数据库账号test_user和密码Password123

mysql -h<PolarDB_1集群连接地址> -P3306 -u<数据库账号> -p<数据库密码>

  1. 依次执行如下命令,创建表、导入数据和设置主外键。

说明:导入数据和设置主外键时长会比较久,大约需要20分钟,请您耐心等待。

source ./dss.ddl
source ./load.ddl
source ./dss.ri

  1. 输入exit;并回车退出数据库。
  2. 执行如下命令,创建建立索引的脚本create_index.sh。
vim create_index.sh
  1. 在create_index.sh脚本中按i键进入编辑模式,将如下内容添加到create_index.sh脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
#!/usr/bin/bash
host=$1
port=$2
user=$3
password=$4
db=$5
sqls=("create index i_s_nationkey on supplier (s_nationkey);"
"create index i_ps_partkey on partsupp (ps_partkey);"
"create index i_ps_suppkey on partsupp (ps_suppkey);"
"create index i_c_nationkey on customer (c_nationkey);"
"create index i_o_custkey on orders (o_custkey);"
"create index i_o_orderdate on orders (o_orderdate);"
"create index i_l_orderkey on lineitem (l_orderkey);"
"create index i_l_partkey on lineitem (l_partkey);"
"create index i_l_suppkey on lineitem (l_suppkey);"
"create index i_l_partkey_suppkey on lineitem (l_partkey, l_suppkey);"
"create index i_l_shipdate on lineitem (l_shipdate);"
"create index i_l_commitdate on lineitem (l_commitdate);"
"create index i_l_receiptdate on lineitem (l_receiptdate);"
"create index i_n_regionkey on nation (n_regionkey);"
"analyze table supplier"
"analyze table part"
"analyze table partsupp"
"analyze table customer"
"analyze table orders"
"analyze table lineitem"
"analyze table nation"
"analyze table region")
for sql in "${sqls[@]}"
do
    mysql -h$host -P$port -u$user -p$password -D$db  -e "$sql"
done
  1. 执行如下命令,运行create_index.sh脚本。

说明:为云数据库PolarDB_1实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_1实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

chmod a+x create_index.sh
./create_index.sh <PolarDB_1集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库>

  1. 执行如下命令,创建将索引数据预载到内存池的脚本load_index.sh
vim load_index.sh
  1. 在load_index.sh脚本中按i键进入编辑模式,将如下内容添加到load_index.sh脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
#!/bin/bash
host=$1
port=$2
user=$3
password=$4
dbname=$5
MYSQL="mysql -h$host -P$port -u$user -p$password -D$dbname"
if [ -z ${dbname} ]; then
    echo "dbname not defined."
    exit 1
fi
table_indexes=(
        "supplier PRIMARY"
        "supplier i_s_nationkey"
        "part PRIMARY"
        "partsupp PRIMARY"
        "partsupp i_ps_partkey"
        "partsupp i_ps_suppkey"
        "customer PRIMARY"
        "customer i_c_nationkey"
        "orders PRIMARY"
        "orders i_o_custkey"
        "orders i_o_orderdate"
        "lineitem PRIMARY"
        "lineitem i_l_orderkey"
        "lineitem i_l_partkey"
        "lineitem i_l_suppkey"
        "lineitem i_l_partkey_suppkey"
        "lineitem i_l_shipdate"
        "lineitem i_l_commitdate"
        "lineitem i_l_receiptdate"
        "nation i_n_regionkey"
        "nation PRIMARY"
        "region PRIMARY"
)
for table_index in "${table_indexes[@]}"
do
    ti=($table_index)
    table=${ti[0]}
    index=${ti[1]}
    SQL="select count(*) from ${table} force index(${index})"
    echo "$MYSQL -e '$SQL'"
    $MYSQL -e "$SQL"
done

  1. 执行如下命令,运行load_index.sh脚本。

说明:为云数据库PolarDB_1实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_1实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

chmod a+x load_index.sh
./load_index.sh <PolarDB_1集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库>

  1. 执行如下命令,切换到queries目录,创建测试脚本run_benchmark.sh。
cd queries
vim run_benchmark.sh
  1. 在run_benchmark.sh脚本中按i键进入编辑模式,将如下内容添加到run_benchmark.sh脚本中。添加完成后按下Esc键后,输入:wq后按下Enter键保存并退出。
#!/usr/bin/env bash
host=$1
port=$2
user=$3
password=$4
database=$5
resfile=$6
echo "start test run at"`date "+%Y-%m-%d %H:%M:%S"`|tee -a ${resfile}.out
for (( i=1; i<=22;i=i+1 ))
do
queryfile="Q"${i}".sql"
start_time=`date "+%s.%N"`
echo "run query ${i}"|tee -a ${resfile}.out
mysql -h ${host}  -P${port} -u${user} -p${password} $database -e" source $queryfile;" |tee -a ${resfile}.out
end_time=`date "+%s.%N"`
start_s=${start_time%.*}
start_nanos=${start_time#*.}
end_s=${end_time%.*}
end_nanos=${end_time#*.}
if [ "$end_nanos" -lt "$start_nanos" ];then
        end_s=$(( 10#$end_s -1 ))
        end_nanos=$(( 10#$end_nanos + 10 ** 9))
fi
time=$(( 10#$end_s - 10#$start_s )).`printf "%03d\n" $(( (10#$end_nanos - 10#$start_nanos)/10**6 ))`
echo ${queryfile} "the "${j}" run cost "${time}" second start at"`date -d @$start_time "+%Y-%m-%d %H:%M:%S"`" stop at"`date -d @$end_time "+%Y-%m-%d %H:%M:%S"` >> ${resfile}.time
done

  1. 执行如下命令,运行run_benchmark.sh脚本,运行22个查询SQL。

说明:为云数据库PolarDB_1实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_1实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

chmod a+x run_benchmark.sh
# 运行的结果在result_1.out和result_1.time中 
./run_benchmark.sh <PolarDB_1集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库> result_1

  1. 执行如下命令,查看22个查询SQL的运行是时长。
cat result_1.time

  1. 执行如下命令,统计总用时。
awk -F " " '{sum+=$5} END {print"Total Execution Time =", sum}' result_1.time


5. PolarDB扩容后的TPCH测试

本步骤测试规格为4核8GB的云数据库PolarDB,进行TPCH测试查询22个SQL,云数据库PolarDB的性能。

说明:云起实验室暂不支持对云数据库PolarD进行手动扩容,所以为用户提供了一个4核8GB的云数据库PolarDB,您可直接使用该PolarDB实例进行TPCH测试。在云产品资源列表中可查看该PolarDB实例的实例名称为PolarDB_2,以及集群私网地址。

  1. 执行如下命令,返回上层目录。
cd ..
  1. 执行如下命令,连接PolarDB_1集群。

说明:您需要将改为云数据库PolarDB_2实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_2实例的集群私网地址。你需要将<数据库账号>和<数据库密码>改为test_userPassword123

mysql -h<PolarDB_2集群连接地址> -P3306 -u<数据库账号> -p<数据库密码>

  1. 依次执行如下命令,创建表、导入数据和设置主外键。

说明:导入数据和设置主外键时长会比较久,大约需要20分钟,请您耐心等待。

source ./dss.ddl
source ./load.ddl
source ./dss.ri

  1. 输入exit;并回车退出数据库。
  2. 执行如下命令,运行create_index.sh脚本,建立索引。

说明:为云数据库PolarDB_2实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_2实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

./create_index.sh <PolarDB_2集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库>

  1. 执行如下命令,运行load_index.sh脚本,将索引数据预载到内存池。

说明:为云数据库PolarDB_2实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_2实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

./load_index.sh <PolarDB_2集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库>

  1. 执行如下命令,切换到queries目录。
cd queries
  1. 执行如下命令,运行run_benchmark.sh脚本,运行22个查询SQL。

说明:为云数据库PolarDB_2实例的集群私网地址,您可在云产品资源列表中查看到PolarDB_2实例的集群私网地址。端口号默认为3306。<数据库账号>和<数据库密码>为第二节中创建的数据库账号test_user和密码Password123。<数据库>为tpch_100。

# 运行的结果在result_2.out和result_2.time中 
./run_benchmark.sh <PolarDB_2集群连接地址> <端口号> <数据库账号> <数据库密码> <数据库> result_2

  1. 执行如下命令,查看22个查询SQL的运行是时长。
cat result_2.time

  1. 执行如下命令,统计总用时。通过统计结果,我们可以看到4核8GB规格的PolarDB比2核4GB规格的PolarDB的22条查询总用时少,TPCH性能更强。
awk -F " " '{sum+=$5} END {print"Total Execution Time =", sum}' result_2.time


实验链接:https://developer.aliyun.com/adc/scenario/d4eb7252991b4e63b4526020c4c4f404


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
存储 关系型数据库 分布式数据库
PolarDB 并行查询问题之分布式查询执行过程中的数据分发如何解决
PolarDB 并行查询问题之分布式查询执行过程中的数据分发如何解决
45 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之大数据量的实时分析查询挑战如何解决
PolarDB 并行查询问题之大数据量的实时分析查询挑战如何解决
33 2
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
22 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之帮助处理实时性分析查询如何解决
PolarDB 并行查询问题之帮助处理实时性分析查询如何解决
40 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之提升对复杂查询的处理能力如何解决
PolarDB 并行查询问题之提升对复杂查询的处理能力如何解决
24 1
|
3月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
104 1
|
4月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之Federated引擎是否支持弹性并行查询
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之查询数据库时出现报错,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库
关系型数据库SQLserver查询编辑器
【7月更文挑战第27天】
51 3
|
4月前
|
存储 运维 关系型数据库
PolarDB产品使用问题之在删除主节点上的表后尝试查询归档表遇到问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

相关产品

  • 云原生数据库 PolarDB