我有一个相当强大的数据库服务器,有大约24个内核和48 GB的RAM.我们正在运行MariaDB 10.0作为我们的数据库引擎.我的所有表都在InnoDB引擎上运行.我有一些查询在大表上使用相当广泛的连接,因此自然很慢.我正在努力做的一件事是尝试利用多核的力量.以下是我的观察:
>如果我并行运行2个查询,那么我可以看到正在使用2个核心
>如果我运行1个查询,我看到只有1个核心被用于100%
现在,这是正常行为吗?我的意思是,MariaDB / MySQL中没有办法为单个查询使用多个核心?如果使用多个CPU核心可以更快地运行单个繁重的查询,那将会很棒.
我尝试搜索多个论坛,并使用不同的参数,如Innodb_thread_cocurrency,但到目前为止还没能在多个核心上运行单个查询.
有没有其他引擎可以帮助我做到这一点(我目前正在阅读XtraDB)?
更新:
好吧,实际上我正试图分析社交媒体数据.想象一下拥有2-3百万条推文的数据库.当然,我们正在讨论与USer数据,主题标签,图像,链接等相关联的表.所以总的来说是一个相当大的数据库.在某些情况下,有些查询需要在多个表上进行某些连接,并且自然很慢.因此,想象一下,例如一个带有5-6个不同查询的仪表板查询.当单个用户登录时,这会将负载放在单个核心上,并且整个核心的使用时间为n秒.如果我有12个内核,假设有12个用户同时尝试访问系统,那么我就会遇到严重的瓶颈.我完全理解,分片,群集,分布式数据库,分区等选项可以帮助我.但是现在我正在尝试了解在我查看水平扩展(其中我引入更多服务器)之前如何最好地垂直扩展系统.使用多个内核本来是一个很好的选择,但我想现在我明白了,MySQL本身并不是这样设计的.我想我将开始研究各种[可能的架构,以便在多个实例上扩展数据库.