我正在本地测试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

我创建了一个表,其中包含约20列,10 str,3 bool,2 int16,3 datetime(大多数已填充);和2 MULTI str(未填充)。

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

我正在测试使用此功能的读取吞吐量:

async def main():
    c = await edgedb.async_connect("edgedb://edgedb@localhost")
    d = await c.fetchall("""
        SELECT User {
            domain,
            username,
            # 16 more columns
        };
    """)
    logging.warning("got %s records", len(d))

而我得到约1.1秒的35,000行。那是3万行/秒或
这慢吗?这样快吗?

公平地说,我最近发现,在这种设置(amazon blog post)中,生产AWS dynamodb的最高速度为1MB/s,因此EdgeDB赢得了十倍的奖励。同时,我还记得十年前运行MySQL/InnoDB服务器并考虑了成千上万个行/秒的性能。那么EdgeDB似乎慢了三十倍?

最佳答案

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

我的结果:

35038条记录(0.286秒):122314条记录/秒

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

35038条记录(每0.285秒):122986条记录/秒

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

关于database - EdgeDB 35,000行/秒是慢还是快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60067770/

10-09 19:48