我有一个相当强大的数据库服务器,有大约24个内核和48 GB的RAM.我们正在运行MariaDB 10.0作为我们的数据库引擎.我的所有表都在InnoDB引擎上运行.我有一些查询在大表上使用相当广泛的连接,因此自然很慢.我正在努力做的一件事是尝试利用多核的力量.以下是我的观察:
现在,这是正常行为吗?我的意思是,MariaDB/MySQL中没有办法为单个查询使用多个核心?如果使用多个CPU核心可以更快地运行单个繁重的查询,那将会很棒.
我尝试搜索多个论坛,并使用不同的参数,如Innodb_thread_cocurrency,但到目前为止还没能在多个核心上运行单个查询.
有没有其他引擎可以帮助我做到这一点(我目前正在阅读XtraDB)?
更新:
好吧,实际上我正试图分析社交媒体数据.想象一下拥有2-3百万条推文的数据库.当然,我们正在讨论与USer数据,主题标签,图像,链接等相关联的表.所以总的来说是一个相当大的数据库.在某些情况下,有些查询需要在多个表上进行某些连接,并且自然很慢.因此,想象一下,例如一个带有5-6个不同查询的仪表板查询.当单个用户登录时,这会将负载放在单个核心上,并且整个核心的使用时间为n秒.如果我有12个内核,假设有12个用户同时尝试访问系统,那么我就会遇到严重的瓶颈.我完全理解,分片,群集,分布式数据库,分区等选项可以帮助我.但是现在我正在尝试了解在我查看水平扩展(其中我引入更多服务器)之前如何最好地垂直扩展系统.使用多个内核本来是一个很好的选择,但我想现在我明白了,MySQL本身并不是这样设计的.我想我将开始研究各种[可能的架构,以便在多个实例上扩展数据库.
我希望在我的一个项目场景中对Hadoop等大数据平台的使用有一些专家意见.虽然我很了解像MySQL这样的数据库,但我是这项技术的新手.
我们正在创建一种用于分析社交媒体数据的产品.因此输入数据将是大量的推文,Facebook帖子,用户配置文件,YouTube数据和来自博客的数据等.除此之外,我将有一个Web应用程序来帮助我查看和分析这些数据.正如要求所表明的那样,我需要一种实时系统.因此,如果我有一条推文,我想将它提供给我的网络应用程序,以便进行处理.批量数据处理可能不适合我的应用程序.
我的问题是:
我们目前正在将 MongoDB 用于我们的“大规模数据”产品之一。简单介绍一下,我们使用 Mongo 来存储大量社交媒体数据,例如推文/帖子/主题标签等。所以用例是社交媒体分析。到目前为止,我们在使用 MongoDB 时面临的唯一问题是全文搜索能力和聚合性能。
文档数量约为 2500 万,我们在单个实例上使用它。此外,我们的大部分分析都是在整个集合上进行的(我们通常没有很多过滤器来减少分析数据集)。最近我们开始研究弹性搜索。它是一个漂亮的工具,搜索速度非常快。因此,我们考虑的一种方案是将其用作 Mongo 之上的搜索层。
但是,经过评估,我们发现 ES 也具有强大的分析能力,尤其是在聚合方面。我们的问题是使用 ES 作为唯一的数据存储(作为 Mongo 的替代品)是否是个好主意。我们在搜索层而不是分析工具方面看到了 ES 的大部分吸引力。在分析能力中使用 ES 是否有任何缺点。简而言之,Mongo 在哪些方面比 ES 做得更好?