当使用C#对MemSQL安装执行插入甚至是select语句时,它非常慢。在数据库服务器上执行的查询非常快。
因此,查询代码与MemSQL之间的某些内容无法执行。执行示例插入程序时,它每秒只插入40-60条记录,但在进行速度测试时,它每秒插入220万条记录。所以问题需要在其他地方。有什么想法吗?
答案 0 :(得分:1)
听起来瓶颈是您连接/运行查询的方式。例如,您可能一次只运行一个插入,在这种情况下,所有时间都花在等待往返连接延迟上。我建议尝试的第一件事,如果您还没有,则每个查询插入多行并同时运行多个查询。有关示例,请参阅http://docs.memsql.com/latest/concepts/multi_insert_examples/#c。如果您已经在进行这些操作,可以分享有关如何运行测试的更多详细信息吗?
答案 1 :(得分:1)
问题是MySQL协议本身。此连接(以及几乎所有关系数据库有线协议)要求客户端发送,处理然后接收查询以完全完成。
这意味着顺序运行查询的单个线程必须等待每个查询执行完整的往返。您可以通过并行进行多个查询来使用多个线程来提高吞吐量(建议的线程等于可用的核心)。您还可以使用异步方法,以便尽可能快地处理并且只等待I / O.
您还可以将多个INSERT
语句批处理到一个查询中,这将允许更多的吞吐量。
将所有这些技术结合使用可以获得更多性能。