Neki平台上每秒1.18亿次查询
摘要
PlanetScale在其Neki平台上实现了每秒1.18亿次查询的性能,并在512个分片上实现了线性扩展,展示了卓越的数据库操作性能和吞吐量。
暂无内容
查看缓存全文
缓存时间: 2026/09/11 17:25
# 在Neki上实现每秒1.18亿次查询 —— PlanetScale
来源:https://planetscale.com/blog/118-million-queries-per-second-on-neki
昨日我们发布了Neki (https://planetscale.com/blog/introducing-neki)的平台预览版。为庆祝发布,我们决定在Neki上测试每秒100万次查询的运行能力。在5个分片上我们很快达成了这个目标,于是决定进一步挑战性能极限。
最终测试在512个分片上完成,达到每秒1.18亿次查询的处理能力,数据总量达1.22 PB。
## 线性扩展能力 (https://planetscale.com/blog/118-million-queries-per-second-on-neki#linear-scalability)
基准测试设计非常简洁:单分片点查询,每次查询通过主键获取单行数据。不涉及写入操作、联表查询或跨分片请求。每个分片接收的工作负载相互隔离,确保没有单次查询会跨越多个分片。
我们的目标是让每个分片保持20万次/秒的查询能力,然后通过扩展集群来提升整体吞吐量。从5个分片扩展到50个,最终达到512个分片。
| 分片数量 | 路由节点数 | 实际吞吐量(QPS) | 单分片QPS |
|----------|------------|-------------------|-----------|
| 5 | 99 | 1,999,625 | 199,925 |
| 50 | 489 | 99,223,900 | 198,478 |
| 512 | 480 | 118,538,803 | 231,521 |
分片数量增加10倍,吞吐量也相应提升10倍。从5个分片扩展到50个时,单分片查询率波动范围控制在0.8%以内。在512分片规模下,由于分片仍存在性能余量,我们允许负载生成器继续加压,最终每个分片稳定在23.1万次/秒(而非原定的20万次)。
## 1.185亿次/秒的查询能力 (https://planetscale.com/blog/118-million-queries-per-second-on-neki#1185-million-qps)
在512个分片和1.22 PB数据规模下,我们持续16分钟保持了`118,538,803`次/秒的查询吞吐量。峰值记录达到`118,747,267`次/秒。
- 512个分片,每个分片独立运行一个Postgres主节点(配置为`r8g.16xlarge`实例)
- 480个Neki路由器节点,各自运行在独立的`8xlarge`实例上
- 路由器p99延迟为6.06毫秒,客户端p99延迟为13.95毫秒
- 每秒67次错误(约每180万次查询出现1次错误)
- 集群整体读取IOPS达1580万
- 网络带宽超过2 Tb/秒
需要特别说明:本次测试中分片仅运行主节点(无副本),工作负载为纯读取操作,查询复杂度各异,且在测试时段内未发生故障转移。
我们将在后续文章中详细阐述达成1亿次/秒查询能力的工程实践与技术挑战。
相似文章
PlanetScale 的 Neki
Neki 是由 PlanetScale 提供的分片式 Postgres 解决方案,可实现水平扩展至数亿 QPS 和 PB 级数据,且操作零停机。
Neki
Neki是来自PlanetScale的分片式PostgreSQL,旨在保持标准PostgreSQL兼容性和内置在线工作流程的同时,实现跨多台服务器扩展PostgreSQL数据库。
让768台服务器看起来像1台
PlanetScale介绍了如何使用数据库分片将关系型数据库从单台服务器扩展到768台服务器,并解决诸如写入限制和资源争用等瓶颈问题。
@PlanetScale:数据库太慢?本地挂载 NVMe 存储带来无上限 IOPS,把数据中心级性能搬进云端……
PlanetScale 推出基于本地 NVMe 存储的高性能云托管方案,为 Vitess 与 Postgres 提供无上限 IOPS 与横向扩展能力。
@BenjDicken:查询规划很难。在一个大型分片数据库中做这件事甚至更难。我们今天在PlanetSc…发布的博客
PlanetScale的一篇博客文章讨论了在大型分片数据库中查询规划的挑战,旨在向读者普及数据库查询规划器的知识。