首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MEMSQL与MySQL之争

问MEMSQL与MySQL之争
EN

Stack Overflow用户
提问于 2015-09-24 18:52:54
回答 1查看 5.5K关注 0票数 6

首先,我要指出,我绝不是一个数据库专家。我确实知道如何用几种需要数据库后端的语言编写应用程序,而且我对MySQL、Microsoft和现在的MEMSQL比较熟悉--但我也不是数据库方面的专家,因此我们非常感谢您的输入。

我一直在开发一个应用程序,需要交叉引用几个不同的表。我最近遇到的一个非常简单的例子是,我必须:

  1. 在每天的基础上,把600 K到1米的记录拉到一个临时的桌子上。
  2. 比较一下新的数据拉力和旧的数据拉力之间发生了什么变化。将该信息记录在单独的表中。
  3. 用新记录重新填充表。

运行#2是一个类似以下查询的查询:

代码语言:javascript
复制
SELECT * FROM (NEW TABLE) LEFT JOIN (OLD TABLE) ON (JOINED FIELD) WHERE (OLD TABLE.FIELD) IS NULL

在本例中,我比较给定字段上的两个表,然后提取更改的信息。

在MySQL (v5.6.26,x64)中,我的查询超时。我正在运行4个vCPU和8GB内存,但请注意,我的其他配置是默认配置(没有调整任何参数)。

在MEMSQL (v5.5.8,x64)中,我的查询在第一次尝试时大约在3秒中运行。我使用4个vCPU和8GB RAM运行完全相同的虚拟服务器配置,还请注意,我的配置的其余部分是默认配置(没有调整任何参数)。

另外,在MEMSQL中,我运行的是单个节点配置。MySQL也是如此。

我喜欢使用MEMSQL允许我继续开发我的项目,而且我遇到了更大的交叉计算查询和视图,我可以在MEMSQL上运行这些查询和视图。但是,在理想的世界里,我会使用MySQL。我已经认识到,我需要使用一组不同的工具来管理我的实例(即: MySQL工作台在MEMSQL服务器上工作得比较好,但实际上我需要使用开源server和mysql适配器构建视图和表。使用Visual连接器同样有效,但有时会很痛苦,因为某些原因,我可以添加查询,但不能添加表适配器).对不起,我将提交一个单独的问题:)

考虑到这两台虚拟机都是完全相同的配置,并且SSD支持,有人能给我任何建议如何调整我的MySQL实例来运行像上面提到的MySQL上的大型查询吗?我知道我也可以创建内存中的数据库,但我已经看到,这样做可能会出现一些持久性问题,但我不确定。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 16:59:21

发生这种情况的最可能原因是,您在一个表或两个表中没有joined field索引。根据这一条:

https://www.percona.com/blog/2012/04/04/join-optimizations-in-mysql-5-6-and-mariadb-5-5/

Vanilla只支持嵌套循环联接,这需要索引才能很好地执行(否则它们需要二次时间)。

MemSQL和MariaDB都支持所谓的散列连接,它不需要在表上有索引,而是消耗更多的内存。由于您的数据集对于现代RAM大小来说是非常小的,所以在您的情况下没有注意到额外的内存开销。

因此,要解决这个问题,所需要做的就是在两个表中添加joined field索引。

此外,请描述在单独的问题中连接到MemSQL或在chat.memsql.com上使用开源工具时所面临的问题,以便我们可以在下一个版本中修复它(我为MemSQL工作,与MySQL工具的兼容性是我们的优先事项之一)。

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

https://stackoverflow.com/questions/32768805

复制
相关文章

相似问题

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