YashanDB TPC-C Parameter Template

1 概述

本文档提供 YashanDB TPC-C 性能测试的建库配置参数模板,包括单机和主备两种部署形态。

2 存储空间计算参考

2.1 数据量估算

  • 1 仓 ≈ 76.8MB
  • 索引 ≈ 数据量的 20%
  • 日志和临时文件 ≈ 5%

计算公式:1000 仓总存储 ≈ 76.8M × 1000 × 1.25 = 96GB

2.2 REDO 配置参考

1000 仓峰值写入速率

  • 45 事务 / 仓 / 分钟 × 1000 仓 × 5KB / 事务 = 2250MB / 分钟 ≈ 37.5MB / 秒

单个 redo 文件大小配置

  • 10 分钟测试:建议配置 30G(2.2G × 10 = 22G,取整为 30G)
  • CHECKPOINT_INTERVAL 配置为 30G
  • CHECKPOINT_TIMEOUT 配置为 20 分钟

2.3 UNDO 配置参考

  • 1000 仓建议配置:64G
  • 100 仓建议配置:10G

3 1000 仓 单机主备建库模板

cluster = "yashandb"
create_simple_schema = false
uuid = "76dba42416a41b7f9b6034e11823a876"
yas_type = "SE"

[[group]]
group_type = "db"
name = "dbg1"
[group.config]
CHARACTER_SET = "utf8"
ISARCHIVELOG = true
REDO_FILE_NUM = 10
REDO_FILE_SIZE = "30G"
REDO_BLOCK_SIZE = 512
REDO_FILE_PATH = "/nvme_data10/yashan/redo"
SWAP_FILE_NUM = 1
SWAP_FILE_INIT_SIZE = "40G"
UNDO_FILE_NUM = 1
UNDO_FILE_INIT_SIZE = "40G"
DATA_FILE_NUM = 1
DATA_FILE_INIT_SIZE = "250G"

# 主节点配置
[[group.node]]
data_path = "/nvme_data7/yashan/yasdb_data"
hostid = "host0001"
role = 1
[group.node.config]
CGROUP_ROOT_DIR = "/sys/fs/cgroup"
LISTEN_ADDR = "192.168.24.56:1688"
REPLICATION_ADDR = "192.168.24.56:1689"
RUN_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
RUN_LOG_LEVEL = "INFO"
SLOW_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
DATA_BUFFER_SIZE = "80G"
_DATA_BUFFER_PARTS = 8
VM_BUFFER_SIZE = "30G"
VM_BUFFER_PARTS = 8
_REPLICATION_BUFFER_SIZE = "128M"
REDO_BUFFER_SIZE = "128M"
REDO_BUFFER_PARTS = 8
LARGE_POOL_SIZE = "2G"
WORK_AREA_POOL_SIZE = "2G"
UNDO_RETENTION = 30
UNDO_SHRINK_ENABLED = "FALSE"
_SESSION_RESERVED_CURSORS = 64
WORK_AREA_HEAP_SIZE = "2M"
CHECKPOINT_TIMEOUT = 1000000000
CHECKPOINT_INTERVAL = "128M"
SHARE_POOL_SIZE = "2G"
STATISTICS_LEVEL = "BASIC"
REDOFILE_IO_MODE = "DIRECT"
MAX_SESSIONS = 2048
RECOVERY_PARALLELISM = 64
ARCH_CLEAN_UPPER_THRESHOLD = "1K"
ARCH_CLEAN_LOWER_THRESHOLD = "0"
_ARCHIVE_DELAY_TIME = 600
ARCH_CLEAN_IGNORE_MODE = "BACKUP"
date_format = 'yyyy-mm-dd hh24:mi:ss'
_SPLIT_BRAIN_DATA_LIMIT = "1024G"

# 备节点配置
[[group.node]]
data_path = "/nvme_data7/yashan/yasdb_data"
hostid = "host0002"
role = 2
[group.node.config]
CGROUP_ROOT_DIR = "/sys/fs/cgroup"
LISTEN_ADDR = "192.168.24.57:1688"
REPLICATION_ADDR = "192.168.24.57:1689"
RUN_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
RUN_LOG_LEVEL = "INFO"
SLOW_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
DATA_BUFFER_SIZE = "80G"
_DATA_BUFFER_PARTS = 8
VM_BUFFER_SIZE = "5G"
VM_BUFFER_PARTS = 8
_REPLICATION_BUFFER_SIZE = "128M"
REDO_BUFFER_SIZE = "128M"
REDO_BUFFER_PARTS = 8
LARGE_POOL_SIZE = "2G"
WORK_AREA_POOL_SIZE = "2G"
UNDO_RETENTION = 30
UNDO_SHRINK_ENABLED = "FALSE"
_SESSION_RESERVED_CURSORS = 64
WORK_AREA_HEAP_SIZE = "2M"
CHECKPOINT_TIMEOUT = 1000000000
CHECKPOINT_INTERVAL = "128M"
SHARE_POOL_SIZE = "2G"
STATISTICS_LEVEL = "BASIC"
REDOFILE_IO_MODE = "DIRECT"
MAX_SESSIONS = 2048
RECOVERY_PARALLELISM = 64
ARCH_CLEAN_UPPER_THRESHOLD = "1K"
ARCH_CLEAN_LOWER_THRESHOLD = "0"
_ARCHIVE_DELAY_TIME = 600
ARCH_CLEAN_IGNORE_MODE = "BACKUP"
date_format = 'yyyy-mm-dd hh24:mi:ss'
_SPLIT_BRAIN_DATA_LIMIT = "1024G"

4 1000 仓 单机建库模板

cluster = "yashandb"
create_simple_schema = false
uuid = "76dba42416a41b7f9b6034e11823a876"
yas_type = "SE"

[[group]]
group_type = "db"
name = "dbg1"
[group.config]
CHARACTER_SET = "utf8"
ISARCHIVELOG = true
REDO_FILE_NUM = 10
REDO_FILE_SIZE = "30G"
REDO_BLOCK_SIZE = 512
REDO_FILE_PATH = "/nvme_data10/yashan/redo"
SWAP_FILE_NUM = 1
SWAP_FILE_INIT_SIZE = "40G"
UNDO_FILE_NUM = 1
UNDO_FILE_INIT_SIZE = "40G"
DATA_FILE_NUM = 1
DATA_FILE_INIT_SIZE = "250G"

[[group.node]]
data_path = "/nvme_data7/yashan/yasdb_data"
hostid = "host0001"
role = 1
[group.node.config]
CGROUP_ROOT_DIR = "/sys/fs/cgroup"
LISTEN_ADDR = "192.168.24.56:1688"
REPLICATION_ADDR = "192.168.24.56:1689"
RUN_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
RUN_LOG_LEVEL = "INFO"
SLOW_LOG_FILE_PATH = "/nvme_data7/yashan/yasdb_home/log"
DATA_BUFFER_SIZE = "80G"
_DATA_BUFFER_PARTS = 8
VM_BUFFER_SIZE = "5G"
VM_BUFFER_PARTS = 8
_REPLICATION_BUFFER_SIZE = "128M"
REDO_BUFFER_SIZE = "128M"
REDO_BUFFER_PARTS = 8
LARGE_POOL_SIZE = "2G"
WORK_AREA_POOL_SIZE = "2G"
UNDO_RETENTION = 30
UNDO_SHRINK_ENABLED = "FALSE"
_SESSION_RESERVED_CURSORS = 64
WORK_AREA_HEAP_SIZE = "2M"
CHECKPOINT_TIMEOUT = 1000000000
CHECKPOINT_INTERVAL = "128M"
SHARE_POOL_SIZE = "2G"
STATISTICS_LEVEL = "BASIC"
REDOFILE_IO_MODE = "DIRECT"
MAX_SESSIONS = 2048
RECOVERY_PARALLELISM = 64
ARCH_CLEAN_UPPER_THRESHOLD = "1K"
ARCH_CLEAN_LOWER_THRESHOLD = "0"
_ARCHIVE_DELAY_TIME = 600
ARCH_CLEAN_IGNORE_MODE = "BACKUP"
date_format = 'yyyy-mm-dd hh24:mi:ss'
_SPLIT_BRAIN_DATA_LIMIT = "1024G"

5 关键参数说明

5.1 内存参数

参数名 说明 推荐值(1000 仓)
DATA_BUFFER_SIZE 数据缓冲区大小 尽可能大,能 cover 数据量
VM_BUFFER_SIZE SQL 计算内存 5-30G
SHARE_POOL_SIZE 共享缓存区 2G
LARGE_POOL_SIZE 大数据块内存 2G
WORK_AREA_POOL_SIZE 全局执行内存区 2G

5.2 REDO 参数

参数名 说明 推荐值(1000 仓)
REDO_FILE_NUM redo 文件数量 10
REDO_FILE_SIZE 单个 redo 文件大小 30G
REDO_BUFFER_SIZE redo 缓存区大小 128M
REDOFILE_IO_MODE redo 文件 IO 模式 DIRECT

5.3 UNDO 参数

参数名 说明 推荐值(1000 仓)
UNDO_FILE_INIT_SIZE undo 表空间大小 40-64G
UNDO_RETENTION undo 保留时间 15-30 秒
UNDO_SHRINK_ENABLED 是否开启 undo 自动平衡 FALSE

5.4 CHECKPOINT 参数

参数名 说明 推荐值
CHECKPOINT_INTERVAL checkpoint 大小间隔 40G
CHECKPOINT_TIMEOUT checkpoint 时间间隔 1000000000(很大,不主动触发)

如果时间长数据库一定会触发 checkpoint,这样设置反而不合适, 应把 CHECKPOINT_INTERVAL 调小如 512M,CHECKPOINT_TIMEOUT 使用默认值。

6 主备配置与单机配置差异

配置项 单机主备 单机
节点数量 2 个节点(role=1 主,role=2 备) 1 个节点
DATA_BUFFER_SIZE 主节点 80G,备节点 180G 80G
VM_BUFFER_SIZE 主节点 30G,备节点 5G 5G
REPLICATION_ADDR 需要配置备节点复制地址 无需配置

7 附录:参数调整建议

7.1 不同仓数配置参考

仓数 DATA_BUFFER_SIZE REDO_FILE_SIZE UNDO_FILE_INIT_SIZE
100 仓 10-20G 10G 10-20G
1000 仓 80-180G 30G 40-64G

7.2 性能调优参数

参数 说明 调优建议
REDOFILE_IO_MODE redo 文件 IO 模式 生产建议 DSYNC,性能测试可用 DEFAULT
COMMIT_WAIT commit 等待模式 性能测试可用 nowait
COMMIT_LOGGING commit 日志模式 性能测试可用 batch
DOUBLE_WRITE_ENABLED 双写开关 客户允许可关闭
DB_BLOCK_CHECKSUM 校验开关 客户允许可关闭