35k rows/s 对于 EdgeDB 来说是慢还是快?
Is 35k rows/s slow or fast for 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
我创建了一个 table,其中包含 ~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.1s 35k 行。那是 30k rows/s 或 <20MB/s。
这很慢吗?这么快吗?
公平地说,我最近发现生产 AWS dynamodb 在这种设置中最高可达 1MB/s (amazon blog post),因此 EdgeDB 胜出十倍。同时,我有点回想起 运行 一台 MySQL/InnoDB 服务器,并考虑了十年前以百万或 rows/s 为单位的性能。所以 EdgeDB 似乎慢了 30 倍?
我重现了基准测试并做了一些改动:1) 我只测量了实际的查询运行时间(不包括连接时间); 2) EdgeDB 服务器 运行 直接位于 Linux 主机上,而不是 Docker.
我的结果:
35038 条记录在 0.286 秒内:122314 records/s
为了比较,我将相同的数据集直接加载到 Postgres 中,并 运行 使用 psycopg2 进行类似的查询。结果几乎相同:
35038 条记录在 0.285 秒内:122986 records/s
这并不奇怪,因为一旦查询被编译为 SQL,EdgeDB 相对于原始 Postgres 的 I/O 开销可以忽略不计。此外,为了更好地对服务器进行压力测试,您需要多个并发客户端,正如我们在 benchmarks.
中所做的那样
我正在本地测试 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
我创建了一个 table,其中包含 ~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.1s 35k 行。那是 30k rows/s 或 <20MB/s。
这很慢吗?这么快吗?
公平地说,我最近发现生产 AWS dynamodb 在这种设置中最高可达 1MB/s (amazon blog post),因此 EdgeDB 胜出十倍。同时,我有点回想起 运行 一台 MySQL/InnoDB 服务器,并考虑了十年前以百万或 rows/s 为单位的性能。所以 EdgeDB 似乎慢了 30 倍?
我重现了基准测试并做了一些改动:1) 我只测量了实际的查询运行时间(不包括连接时间); 2) EdgeDB 服务器 运行 直接位于 Linux 主机上,而不是 Docker.
我的结果:
35038 条记录在 0.286 秒内:122314 records/s
为了比较,我将相同的数据集直接加载到 Postgres 中,并 运行 使用 psycopg2 进行类似的查询。结果几乎相同:
35038 条记录在 0.285 秒内:122986 records/s
这并不奇怪,因为一旦查询被编译为 SQL,EdgeDB 相对于原始 Postgres 的 I/O 开销可以忽略不计。此外,为了更好地对服务器进行压力测试,您需要多个并发客户端,正如我们在 benchmarks.
中所做的那样