如何选择TDSQL实例配置和分片配置
最近更新时间: 2024-10-17 17:10:00
TDSQL 选型概述
TDSQL 由分片(sharding)组成,分片的规格和分片数量决定了 TDSQL 实例的处理能力。理论上来讲:
- TDSQL 实例读写并发性能 = ∑(某规格分片性能 * 某规格分片数量)
- TDSQL 实例事务性能 = ∑(某规格分片事务性能 * 70% * 某规格分片数量)
因此,分片规格越高、分片数量越多,实例的处理能力越强。而分片性能,主要与 CPU / 内存 相关,并以 QPS 为基础衡量指标,我们在分片性能说明章节,给出了大致性能指标。
TDSQL 分片规格的选择
TDSQL 分片规格的选择,主要从三个方面需求来决定:1、性能需求;2、容量需求;3、其他要求。
性能需求:通过预判至少6个月的性能规模和可能增长,您可以确定您分布式实例所需总 CPU / 内存 规模。 容量需求:通过预判至少1年的容量规模和可能增长,您可以确定您分布式实例所需总 磁盘 规模。 其他要求:我们建议一个分片至少存储5000W行数据,并考虑到业务中所需的广播表、单表,和节点内 join 等业务需求。
建议您先确保让单个分片配置较大,而分片数量较少。
综合上述来看,我们预估您可能有如下几种业务特点,推荐策略如下:
- 使用 TDSQL 做功能性测试,且对性能没有特别要求:2个分片,每个分片配置为:内存/磁盘:2GB/25GB。
- 业务发展初期,总数据规模较小但增长快的选型:2个分片,每个分片配置为:内存/磁盘:16GB/200GB。
- 业务发展稳定,根据业务实际情况选型:4个分片,每个分片配置等于:当前业务峰值*增长率/4
TDSQL 分片性能测试
数据库基准性能测试为 sysbench 0.5 工具。
修改说明:对 sysbench 自带的 otlp 脚本做了修改,读写比例修改为 1:1,并通过执行测试命令参数 oltp_point_selects 和 oltp_index_updates 控制读写比例。本文测试用例的均采用4个 select 点,1个 update 点,读写比例保持 4:1。
产品性能与物理服务器配置有关联关系,本性能测试采用(24core,512GB内存,nvme-SSD7200GB磁盘)
vCPU(核) | 内存(GB) | 存储空间(GB) | 数据集(GB) | 客户端数 | 单客户端并发数 | QPS | TPS |
---|---|---|---|---|---|---|---|
1 | 2GB | 100GB | 46GB | 1 | 128 | 1880 | 351 |
2 | 4GB | 200GB | 76GB | 1 | 128 | 3983 | 797 |
2 | 8GB | 200GB | 142GB | 1 | 128 | 6151 | 1210 |
4 | 16GB | 400GB | 238GB | 1 | 128 | 10098 | 2119 |
4 | 32GB | 700GB | 238GB | 2 | 128 | 20125 | 3549 |
8 | 64GB | 1T | 378GB | 2 | 128 | 37956 | 7002 |
12 | 96GB | 1.5T | 378GB | 3 | 128 | 51026 | 10591 |
16 | 120GB | 2T | 378GB | 3 | 128 | 81050 | 15013 |
24 | 240GB | 3T | 567GB | 4 | 128 | 96891 | 17698 |
48 | 480GB | 6T | 567GB | 6 | 128 | 140256 | 26599 |
此处 TPS 为单机 TPS,并非测试的是分布式事务的 TPS。 根据运营策略要求,当前 TDSQL 的(部分)实例都采用闲时超用技术,所以您可能在您的监控中看到 CPU 利用率超过100%的情况。