准备
- 下载tpch相关脚本(见附件),解压到个人指定目录(<you_script_path>)
- 准备一台 16c64G 的机器(理论上机器资源也可以更小,不过没有实际测试过)
1. 集群部署
https://open.oceanbase.com/docs/observer-cn/V3.1.3/10000000000096602
2. 租户创建
obd cluster tenant create <deploy_name> -n test
这里注意下,deploy_name需要和集群部署时填的deploy name一致,否则会有报错,下同
3. TPCH测试
参照:https://open.oceanbase.com/docs/observer-cn/V3.1.3/10000000000096610
3.1-安装依赖
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install obtpch
sudo ln -s /usr/tpc-h-tools/tpc-h-tools/ /usr/local/
3.2-运行测试
# --ddl-path里面需要填“准备”部分下载的资源包中的解压出来对应的位置
obd test tpch <deploy_name> --tenant=test -s 1 --ddl-path=<you_script_path>/oceanbase_tpch/benchmark_scripts/DDL/create_tpch_mysql_table_part.ddl --remote-tbl-dir=/tmp/tpch1g
4. TPCH ACID验证
TPCH官方发布的FDR中有关于ACID验证的描述,有兴趣的同学可以了解一下:https://www.tpc.org/results/fdr/tpch/oceanbase~tpch~30000~oceanbase_v32~fdr~2021-05-19~v01.pdf
官网提供的ACID验证的脚本有部分硬编码和环境相关的变量,需要做一些调整之后才可以执行,具体如下:
4.1-修改config.sh
cd <you_script_path>/benchmark_scripts/KIT/script vim config.sh
需要将TPCHDIR修改成<you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/
4.2-修改数据库连接信息(可选,如果使用默认创建的tenant,本步骤可不执行)
cd <you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/ACID/scripts
vim run_acid.sh
需要修改DBNAME、TPC_USER、TPC_TENANT
4.3-重新编译acid的binary(可选,已经有编译好的版本,如果用不了需要重新编译)
# 安装依赖
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum -y install mysql
# 编译
cd <you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/ACID/scripts/transaction_isolation
gcc -g -O0 -o acidtransaction acidtransactionmain.c querystreamexec.h querystreamexec.c -Wl,-rpath=/usr/lib64 -Wl,-rpath=/usr/lib64.mysql:/u01/obclient/lib -lpthread -lmysqlclient -I /u01/obclient/include -L/u01/obclient/lib
cd <you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/ACID/scripts/transaction_atomicity/
gcc -g -O0 -o acidtransaction acidtransactionmain.c querystreamexec.h querystreamexec.c -Wl,-rpath=/usr/lib64 -Wl,-rpath=/usr/lib64.mysql:/u01/obclient/lib -lpthread -lmysqlclient -I /u01/obclient/include -L/u01/obclient/lib
cd <you_script_path>/oceanbase_tpch/benchmark_scripts/KIT//script/query_streams/
gcc -g -O0 -o querystreamex querystreammain.c querystreamexec.c -Wl,-rpath=/usr/lib64 -Wl,-rpath=/usr/lib64.mysql:/u01/obclient/lib -lpthread -lmysqlclient -I /u01/obclient/include -L/u01/obclient/lib -L./
4.4-修改默认配置项和系统参数;
# tpch acid 依赖prepare statement默认打开
obclient -h<your_ip> -P<your_port> -uroot@sys -A -Dtest -e "alter system set _ob_enable_prepared_statement = True;"
# tpch acid 部分语句查询结果返回较慢,调大默认超时时间
obclient -h<your_ip> -P<your_port> -uroot@test -A -Dtest -e "set @@global.ob_query_timeout = 100000000;"
4.5-运行ACID测试
cd <you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/ACID/scripts
# your_ip your_port需要填部署时指定的server ip、port
sh run_acid.sh <your_ip> <your_port> ./ 1 10 ./ ./
4.6-最终结果
最终结果会生成在
<you_script_path>/oceanbase_tpch/benchmark_scripts/KIT/ACID/scripts/ACID
FAQ
line 69: \[: Q1: integer expression expected
line 74: \[: Q1: integer expression expected
如果机器比较小,跑isolation6的时候,可能会遇到上述报错;该报错主要原因是Q1查询没能在足够时间内返回结果,将该测试忽略即可;
oceanbase_tpch_script.zip (15877031 KB)