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