【发布时间】:2018-11-14 10:46:19
【问题描述】:
我从单个 websocket 连接接收到接近并发级别的大量数据。数据以 json 格式出现,需要进入的表名和需要进入 4 列的数据(所有 4 列都是 int 或 doubles,以了解数据类型和规模)。
例如,假设我每秒获取 1000 行数据,需要转到大约 100 个不同的表(因此每秒每个表 10 行)。我对 MySQL(特别是 MariaDB)中这种规模的数据比较陌生。在我开始之前,我是否需要担心这么快地写入数据库?如果我在插入完成之前收到另一个查询,是否会有积压/我会丢失未插入的数据吗?无论如何我可以判断我是否缺少数据?
我的计划是用 python 编写,但如果这会成为问题,可以调整为 C++(仅当它会成为问题时,不一定只是为了提高性能)。
完整数据流:
Websocket 处理程序:
connect:wss://../streams?=stream1&..stream100
回调:@process_data(msg)
def process_data(msg):
#msg exp: {"table":"stream1", "v1":100, "v2":101, "v3":.000005, "v4":.0002}
connection.execute("""INSERT INTO {}
VALUES ({}, {}, {}, {})
""".format(
msg['table'],
msg['v1'],
msg['v2'],
msg['v3'],
msg['v4']
)
)
我每秒收到大约 1000 条消息。
TL;DR:我会丢失数据/弄乱这个设置吗?它在 2 个流的小范围内工作(我认为,但我不知道我是否已经丢失数据),但我需要显着扩展它。
对不起,如果这是一个愚蠢的问题。
编辑:MyMaths != "good"
【问题讨论】:
标签: python mysql python-3.x performance mariadb