go-tpc 最佳实践教程

go-tpc 最佳实践教程

go-tpc A toolbox to benchmark TPC workloads in Go go-tpc 项目地址: https://gitcode.com/gh_mirrors/go/go-tpc

项目介绍

go-tpc 是一个由 优快云 公司开发的 InsCode AI 大模型,用于在 Go 语言中对 TPC(Transaction Processing Performance Council)工作负载进行基准测试。它支持对 TiDB、MySQL 以及兼容 PostgreSQL 的数据库(如 PostgreSQL、CockroachDB、AlloyDB、Yugabyte)进行性能测试。

项目快速启动

安装

go-tpc 提供了三种安装方式:

  1. 使用脚本安装(推荐)
curl --proto '=\https' --tlsv1.2 -sSf https://raw.githubusercontent.com/pingcap/go-tpc/master/install.sh | sh

然后在新打开的终端中尝试运行 go-tpc

  1. 下载预编译的二进制文件

你可以从 这里 下载预编译的二进制文件,然后解压即可使用。

  1. 从源代码编译
git clone https://github.com/pingcap/go-tpc.git
cd go-tpc
make build

编译完成后,可以在 ./bin 目录下找到 go-tpc 可执行文件。

基本用法

go-tpc 默认使用 root::@tcp(127.0.0.1:4000)/test 作为数据库连接地址,可以通过以下命令行参数进行修改:

  • -D, --db string:数据库名称(默认为 "test")
  • -H, --host string:数据库主机(默认为 "127.0.0.1")
  • -p, --password string:数据库密码
  • -P, --port int:数据库端口(默认为 4000)
  • -U, --user string:数据库用户(默认为 "root")

例如:

./bin/go-tpc -H 127.0.0.1 -P 3306 -D tpcc ...

TPC-C 基准测试

准备
  • 对于 TiDB 和 MySQL:
./bin/go-tpc tpcc --warehouses 4 prepare -T 4
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc tpcc prepare -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable
运行
  • 对于 TiDB 和 MySQL:
./bin/go-tpc tpcc --warehouses 4 run -T 4

或者包含等待时间(按键和思考时间):

./bin/go-tpc tpcc --warehouses 4 run -T 4 --wait
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc tpcc run -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable
检查
./bin/go-tpc tpcc --warehouses 4 check
清理
./bin/go-tpc tpcc --warehouses 4 cleanup

TPC-H 基准测试

准备
  • 对于 TiDB 和 MySQL:
./bin/go-tpc tpch --sf=1 prepare

或者创建 TiFlash 副本并在数据加载后进行分析:

./bin/go-tpc tpch --sf 1 --analyze --tiflash-replica 1 prepare
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc tpch prepare -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable
运行
  • 对于 TiDB 和 MySQL:
./bin/go-tpc tpch --sf=1 --check=true run

或者不进行结果检查:

./bin/go-tpc tpch --sf=1 run
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc tpch run -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable
清理
./bin/go-tpc tpch cleanup

CH-benchmark 基准测试

准备

首先,请参考 TPC-C 准备部分的说明,准备 TP 部分的模式和填充数据。然后,使用 go-tpc ch prepare 准备 AP 部分的模式和数据。

  • 对于 TiDB 和 MySQL:
./bin/go-tpc tpcc --warehouses 10 prepare -T 4 -D test -H 127.0.0.1 -P 4000
./bin/go-tpc ch --analyze --tiflash-replica 1 prepare -D test -H 127.0.0.1 -P 4000
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc tpcc prepare -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable -T 4
./bin/go-tpc ch prepare -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable
运行
  • 对于 TiDB 和 MySQL:
./bin/go-tpc ch --warehouses $warehouses -T $tpWorkers -t $apWorkers --time $measurement --time run
  • 对于 PostgreSQL、CockroachDB、AlloyDB 和 Yugabyte:
./bin/go-tpc ch run -d postgres -U myuser -p '12345678' -D test -H 127.0.0.1 -P 5432 --conn-params sslmode=disable

应用案例和最佳实践

由于 go-tpc 是一个基准测试工具,其应用场景通常是在数据库性能测试、优化和比较中。以下是一些最佳实践:

  1. 在不同的数据库和配置上运行基准测试,以便比较性能差异。
  2. 使用 --wait 选项模拟真实用户的等待时间,以便更准确地评估数据库性能。
  3. 使用 --analyze 选项对数据库进行优化,以提高测试结果的准确性。
  4. 使用 --output-type csv 选项导出测试结果,以便进行进一步的分析。
  5. 在测试环境中运行基准测试,以确保测试结果不受其他应用程序的影响。

典型生态项目

go-tpc 是一个独立的基准测试工具,但它可以与其他数据库和生态系统项目一起使用,例如:

  1. TiDB:作为 go-tpc 的主要测试对象,TiDB 是一个开源、云原生的分布式数据库,支持水平扩展和自动故障转移。
  2. MySQL:作为另一个流行的开源数据库,MySQL 也支持 go-tpc 的基准测试。
  3. PostgreSQL 及其兼容数据库:这些数据库也支持 go-tpc 的基准测试,可以与其他数据库进行比较。

通过遵循以上最佳实践,你可以充分利用 go-tpc 进行数据库性能测试和优化,以提高数据库性能并确保其可靠性。

go-tpc A toolbox to benchmark TPC workloads in Go go-tpc 项目地址: https://gitcode.com/gh_mirrors/go/go-tpc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余伊日Estra

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值