我正在考虑从H2迁移到MemSQL-我将不胜感激任何评论:
我的应用程序必须非常快地并发地查询多达3亿行的大型表。为此,我一直在使用H2内存数据库。
我目前正在使用H2数据库,该数据库允许我在H2内存数据库中创建指向MySQL数据库的链接表。这在将数据从MySQL加载到H2时非常有用。
我可以在MemSQL中创建链接表-在在线MemSQL文档中看不到对此的引用吗?
另一个挑战是,我将需要在许多服务器上运行该应用程序的多个实例,因此让MemSQL在服务器上分布运行非常有吸引力,而不是必须在服务器上的每个应用程序的JVM实例中复制H2数据库。通过TCP将H2的一个实例运行到其他服务器将太慢。
我在MemSQL上看到的另一个优点是,显然没有锁定,而且查询被编译为本地C++,可以加快查询速度。
有没有人将MemSQL的性能与H2进行了比较? -我在现实世界的测试中没有发现任何东西。
最佳答案
来自MemSQL的Mark L在这里。我想解决您的一些问题,并提供其他帮助以获取您要询问的信息/基准。
MemSQL确实通过JDBC连接器支持链接表(实际上,该连接器的工作方式与MySQL一样),因此使它正常工作不会有任何问题。在分布式模式下运行MemSQL确实会提供很大的性能优势,您将在吞吐量和延迟方面看到全面的改进。我没有直接在H2和MemSQL之间找到直接比较-但是,您可以通过查看MemSQL与MySQL的比较得出一些间接结论,因为我们从网站上获得了H2与MySQL的比较数据。根据我们的现场经验,我希望您在使用MemSQL时观察到显着的性能提升。
总的来说,有些观察:在MemSQL分布式版本中,您将拥有从H2无法获得的一些优势:由于无锁索引,完整的MVCC(H2只能在单盒中做到这一点),因此读取永远不会阻止写入,亮点包括数据自动分片。在所有功能中,对于您的用例而言,自动分片可能是最重要的-H2无法自动分片数据,并且即使在两者之间速度相等的情况下,在分发时具有这种能力显然也是一个很大的优势。 。正如我所提到的,尽管使用MemSQL进行分发会更快,并且与多个H2实例相比更易于管理。
无论如何,我们非常乐意帮助您证明这一点!请随时通过memsql dot com上的larosa与我联系。