go-tpc 最佳实践教程
go-tpc A toolbox to benchmark TPC workloads in Go 项目地址: 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 提供了三种安装方式:
- 使用脚本安装(推荐):
curl --proto '=\https' --tlsv1.2 -sSf https://raw.githubusercontent.com/pingcap/go-tpc/master/install.sh | sh
然后在新打开的终端中尝试运行 go-tpc
。
- 下载预编译的二进制文件:
你可以从 这里 下载预编译的二进制文件,然后解压即可使用。
- 从源代码编译:
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 是一个基准测试工具,其应用场景通常是在数据库性能测试、优化和比较中。以下是一些最佳实践:
- 在不同的数据库和配置上运行基准测试,以便比较性能差异。
- 使用
--wait
选项模拟真实用户的等待时间,以便更准确地评估数据库性能。 - 使用
--analyze
选项对数据库进行优化,以提高测试结果的准确性。 - 使用
--output-type csv
选项导出测试结果,以便进行进一步的分析。 - 在测试环境中运行基准测试,以确保测试结果不受其他应用程序的影响。
典型生态项目
go-tpc 是一个独立的基准测试工具,但它可以与其他数据库和生态系统项目一起使用,例如:
- TiDB:作为 go-tpc 的主要测试对象,TiDB 是一个开源、云原生的分布式数据库,支持水平扩展和自动故障转移。
- MySQL:作为另一个流行的开源数据库,MySQL 也支持 go-tpc 的基准测试。
- PostgreSQL 及其兼容数据库:这些数据库也支持 go-tpc 的基准测试,可以与其他数据库进行比较。
通过遵循以上最佳实践,你可以充分利用 go-tpc 进行数据库性能测试和优化,以提高数据库性能并确保其可靠性。
go-tpc A toolbox to benchmark TPC workloads in Go 项目地址: https://gitcode.com/gh_mirrors/go/go-tpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考