首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高吞吐量到mysql,安全插入?

高吞吐量到mysql,安全插入?
EN

Stack Overflow用户
提问于 2018-06-05 03:55:08
回答 1查看 387关注 0票数 0

我从一个websocket连接中接收到了大量几乎并发级别的数据。数据以json格式输入,它需要进入的表名和需要进入4列的数据(所有4个都是int或types,以给出数据类型和比例的含义)。

例如,假设我每秒获得1000行数据,需要转到大约100个不同的表(所以每秒10行)。对于MySQL中的这种数据规模(特别是MariaDB),我还是比较陌生的。在我开始做这件事之前,我需要这么快地写到DB上吗?如果在插入完成之前获得另一个查询,是否会丢失未插入的数据?不管怎么说,我能判断我是否丢失了数据吗?

我的计划是用python编写,但如果这是问题的话,可以调整到C++ (只有当它是一个问题时,而不一定只是为了提高性能)。

全数据流:

Websocket:

connect:wss://..../streams?=stream1&..stream100

回调:@process_data(msg)

代码语言:javascript
复制
    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博士:我会丢失数据/搞砸这个设置吗?它可以在一个小的基础上与两个流(我想,但我不知道我是否已经失去数据),但我需要大大扩大它。

抱歉,如果这是个愚蠢的问题。

编辑: MyMaths !=“好”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 04:40:15

主要开销是MySQL,而不是Python或C++,所以不要更改应用程序语言。

100 INSERTs/second是我使用的截止点--比它慢,而MySQL/MariaDB“只是开箱即用”。比这更快,你可能需要做些调整。

在实际情况下,通过在单个INSERT语句中插入多个行可以得到很好的提升。我认为python对此有一个特别的要求。每次插入100行(到一个表中)的速度大约是每INSERT一行的10倍。

SSD可能给你10倍。

曾经有100万/秒的基准--但这并不仅仅是凡人可以负担得起的硬件。

对于InnoDB,有几个可调性可以更改。(例如innodb_flush_log_at_trx_commit=2)。

至于“丢失数据”--这是代码的另一面的问题。如果MySQL不能跟上,它就会受到阻碍和阻碍。

我假设python有一个很好的库来解析JSON?

如果你所说的“流”,你指的是“线程”,那么你也必须每个线程有一个连接,除非你将数据反馈回一个线程来完成所有的写入。这两种方法都会奏效。

为什么有100张桌子?如果所有表本质上是相同的,那么它可能是一个“糟糕”的模式设计。

构建一个测试框架来强调测试您的代码。如果您获得2000/秒,那么代码应该足够稳定地执行1000/秒。

如果您需要超过1000/秒,请参见table

PS: 1000 / 100不等于100。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50691759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档