加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL / MariaDB在多个核上运行单个查询

发布时间:2021-03-06 11:22:55 所属栏目:MySql教程 来源:网络整理
导读:我有一个相当强大的数据库服务器,有大约24个内核和48 GB的RAM.我们正在运行MariaDB 10.0作为我们的数据库引擎.我的所有表都在InnoDB引擎上运行.我有一些查询在大表上使用相当广泛的连接,因此自然很慢.我正在努力做的一件事是尝试利用多核的力量.以下是我的

我有一个相当强大的数据库服务器,有大约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本身并不是这样设计的.我想我将开始研究各种[可能的架构,以便在多个实例上扩展数据库.

最佳答案 虽然这个帖子超过半年,但有些评论引起了一些担忧.作为一个硬核数据库性能调优器,我想在这里添加一点输入:

1)在撰写本文时,MariaDB和MySQL不支持在多个处理器上运行单个查询(除非您正在讨论分片).这并不意味着他们将来不会支持它.

2)并行查询可以在其他RDBMS(DB2,Oracle,SQLServer,Postgres等)中完成,它是数据仓库等环境的重要特性.

3)对于长时间运行的查询,通常并行化会缩短执行时间,尽管改进可能不是线性的.因此,说“一个查询使用多个核心使其更快地工作”是不正确的.除非我们对“更快地工作”有不同的定义,否则它对某些工作负载非常有意义.

4)Bottelnecking CPU并不一定意味着“你正在以错误的方式使用数据库”.是的,有些人确实写了可怕的查询(或驱动查询的程序)并将数据库扼杀致死,但这完全是另一个问题.

5)并行性会降低并发性.如果您的目标是支持更多用户(即更高的并发性),则必须放弃在多个处理器上运行查询(或者仅在每个查询的较少处理器上运行).这是你需要做出的权衡.存在过度泛化的风险,您希望OLTP环境查询以串行方式运行,并且OLAP查询并行运行.

干杯!

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读