EdgeDB 的 35k 行/秒是慢还是快?

Dim*_*nek 7 database performance edgedb

我正在本地测试 EdgeDB,我的主机是一台不错的 macbook pro,数据库在 docker 中运行:

version: "3.7"

services:
  edgedb-server:
    image: edgedb/edgedb
    ports:
      - "5656:5656"
      - "8888:8888"
    volumes:
      - type: bind
        source: /Users/dima.tisnek/edgedb-data
        target: /var/lib/edgedb/data
        consistency: delegated
Run Code Online (Sandbox Code Playgroud)

我创建了一个包含 ~20 列、 10 str、 3 bool、 2 int16、 3 datetime(大部分已填充)的表;和 2 MULTI str(未填充)。

我已经加载了 35k 行,总 JSON 数据大小为 18MB。

我正在使用此函数测试读取吞吐量:

version: "3.7"

services:
  edgedb-server:
    image: edgedb/edgedb
    ports:
      - "5656:5656"
      - "8888:8888"
    volumes:
      - type: bind
        source: /Users/dima.tisnek/edgedb-data
        target: /var/lib/edgedb/data
        consistency: delegated
Run Code Online (Sandbox Code Playgroud)

我得到了 35k 行大约 1.1 秒的时间。那是 30k 行/s 或 <20MB/s。

这很慢吗?这速度快吗?

公平地说,我最近发现在这种设置(亚马逊博客文章)中,生产 AWS dynamodb 的最高速度为 1MB/s,因此 EdgeDB 赢了十倍。同时,我还记得十年前运行 MySQL/InnoDB 服务器并考虑以百万或行/sa 表示的性能。所以 EdgeDB 似乎慢了 30 倍?

Elv*_*hus 7

我通过一些更改复制了基准测试:1)我只测量了实际查询运行时间(不包括连接时间);2) EdgeDB 服务器直接在 Linux 主机上运行,​​而不是在 Docker 中。

我的结果:

0.286s 内 35038 条记录:122314 条记录/s

为了进行比较,我将相同的数据集直接加载到 Postgres 中,并使用 psycopg2 运行了一个类似的查询。结果几乎相同:

0.285 秒内 35038 条记录:122986 条记录/秒

这并不奇怪,因为一旦将查询编译为 SQL,EdgeDB 对原始 Postgres 的 I/O 开销就可以忽略不计。此外,为了更好地对服务器进行压力测试,您需要多个并发客户端,正如我们在基准测试中所做的那样。