在系统设计中,了解硬件资源限制、数据库性能指标和常见数据规模是至关重要的。以下是整理的关键参数和参考范围,涵盖数据规模、硬件配置、数据库性能等方面:
字符类型 | 编码方式 | 存储大小 | 备注 |
---|
英文字符 | ASCII 编码 | 1 个字符 = 1 byte | 适用于拉丁字母、数字和基本符号 |
| UTF-8 编码 | 1 个字符 = 1 byte | 兼容 ASCII,英文仍为单字节 |
中文字符 | UTF-8 编码 | 1 个字符 = 3 bytes | 常用汉字占 3 字节,极少数生僻字可能占 4 字节 |
| GBK/GB2312 编码 | 1 个字符 = 2 bytes | 仅支持简体中文,非 Unicode 标准 |
示例计算 | VARCHAR(100) UTF-8 | | |
| 英文 100 字 | 100 * 1B + 长度标识 ≈ 101B | |
| 中文 100 字 | 100 * 3B + 长度标识 ≈ 303B | |
说明:
- 英文字符 在 ASCII 和 UTF-8 编码下均占 1 字节。
- 中文字符 在 UTF-8 编码下通常占 3 字节,而在 GBK/GB2312 编码下占 2 字节。
- 示例计算 展示了
VARCHAR(100)
字段在存储不同字符时的近似大小(包含长度标识)。
数据类型 | 存储空间 | 示例 |
---|
CHAR(n) | 固定长度,不足补空格。英/中文均按定义的长度分配空间。 | CHAR(10) 英文=10B,中文=10B(实际存储内容可能更少,但空间固定) |
VARCHAR(n) | 可变长度,按实际字符数+长度标识(通常 1-2 字节开销)。 | VARCHAR(10) 英文"Hi"=2B+1B,中文"你好"=6B+1B |
TEXT | 可变长度,适合大文本(额外开销存储长度)。 | 英文长文本按实际字符数+开销 |
INT | 通常 4 bytes(固定) | INT = 4B |
BIGINT | 8 bytes | BIGINT = 8B |
DATE/DATETIME | DATE =3B --> 4B, DATETIME =8B | DATETIME = 8B |
数据类型 | 数据大小范围 | 备注 |
---|
单条用户数据(JSON 记录) | 1 KB - 10 KB | |
高清图片 | 1 MB - 5 MB | |
短视频(1 分钟) | 10 MB - 100 MB | |
长视频(1080p,1 小时) | 1 GB - 3 GB | |
数据库单表容量限制 | | |
- MySQL/PostgreSQL | 单表建议 ≤ 500GB | 性能下降临界点 |
- 分布式数据库(如 Cassandra) | 单表可支持 PB 级 | |
用户规模 | 数据总量估算 | 计算依据 |
---|
100 万用户(中等规模) | 1 TB - 10 TB | 假设每人 10 MB 数据 |
10 亿用户(大型系统) | 10 PB - 100 PB | 按中等规模同比放大 1000 倍 |
注:
- 中等规模按单个用户 10MB 数据计算(1M 用户 × 10MB = 10TB)
- 大型系统规模是中等规模的 1000 倍(用户量 ×1000,数据量同步 ×1000)
- PB(Petabyte)是 TB 的 1000 倍级单位(1PB = 1024TB)
类别 | 场景/类型 | 配置范围/规格 |
---|
CPU | 轻量级服务(API 网关) | 2-4 核 |
| 计算密集型(视频转码) | 16-32 核 |
| 云服务器上限(AWS EC2) | 128 vCPU |
内存 | 缓存服务器(Redis) | 16 GB - 256 GB |
| 数据库节点(MySQL) | 32 GB - 512 GB |
| 大数据节点(Spark/Hadoop) | 64 GB - 1 TB |
硬盘 | SSD(生产数据库) | 1 TB - 10 TB(IOPS: 10K - 100K) |
| HDD(冷存储) | 10 TB - 100 TB(吞吐量:100-200 MB/s) |
| 云存储(如 S3) | 理论上无限扩展 |
网络类型 | 带宽范围 | 实际传输速度范围 |
---|
单机 | 1 Gbps - 10 Gbps | 125 MB/s - 1.25 GB/s |
跨数据中心 | 100 Mbps - 10 Gbps | 受延迟影响 |
数据库类型 | 读 QPS | 写 QPS | 适用场景 | 内存需求(生产) |
---|
MySQL | 1K - 5K | 500 - 1K | 关系型事务(OLTP) | 16GB - 128GB |
PostgreSQL | 5K - 50K | 1K - 10K | 复杂查询、GIS | 32GB - 256GB |
MongoDB | 10K - 100K | 5K - 50K | JSON 文档、高吞吐 | 32GB - 512GB |
Cassandra | 50K - 500K | 10K - 100K | 分布式写入、高可用 | 32GB - 1TB |
Redis | 100K - 1M | 100K - 1M | 缓存、实时计数 | 8GB - 256GB |
Elasticsearch | 10K - 50K | 5K - 20K | 全文搜索、日志分析 | 32GB - 512GB |
注:QPS 受索引设计、硬件配置和查询复杂度影响极大。
资源类型 | 瓶颈/限制说明 |
---|
CPU | 单线程性能瓶颈(如 Python/Node.js 的 Event Loop) |
内存 | Java 堆内存限制(-Xmx 参数通常 ≤ 32GB,避免 GC 停顿) |
硬盘 | SSD 寿命(DWPD 指标,如 1 DWPD = 每天全盘写入 1 次) |
策略类型 | 说明 |
---|
分片(Sharding) | 单分片建议 ≤ 1TB(如 MongoDB) |
副本(Replication) | 通常 3-5 副本(CAP 定理权衡) |
服务类型 | 存储/吞吐限制说明 |
---|
AWS RDS MySQL | 最大 16TB 存储、40K IOPS |
DynamoDB | 单表无上限,但分区键热区可能限制吞吐 |
应用场景 | 组件/技术 | 性能指标/架构说明 |
---|
社交网络(读多写少) | 缓存层(Redis) | 100K QPS,数据热区占 20% |
| 数据库(MySQL) | 主从分离,读 QPS 10K,写 QPS 2K |
物联网(写多读少) | 时序数据库(InfluxDB) | 写 QPS 50K,按时间分片存储 |
- 横向扩展优先:无状态服务易扩展,数据库分片需谨慎。
- 预估峰值:按 3 倍日常流量设计容量。
- 监控与调优:实际 QPS 可能因慢查询下降 90%。
这些数字是通用参考,实际需通过压测验证(如 JMeter)。