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 |
校验开关 |
客户允许可关闭 |