单个查询的mysql多线程

use*_*980 7 mysql linux ubuntu

我有一个 8GB 的​​大数据库,在这个数据库中有 900 万个联系人。当我们尝试检索所有联系人时,需要将近 1 或 2 个小时(在某些情况下会导致超时)来检索单个查询执行的所有联系人。此外,我有 8 个 CPU 和 24GB RAM、至强处理器,mysql 进程不会分布在 8 个 CPU 上。我的问题是,我们是否可以为单个查询启用多线程。

等待您的回复

Shl*_*ach 9

MyISAM 和 InnoDB 都没有多线程查询实现。其他 XtraDB、TokuDB 也没有。这是 MySQL 的一个长期存在的问题和限制。我不知道限制是在 MySQL 服务器内,而是在存储引擎实现中。从来没有人做过...

我目前正在评估列存储 InfiniDB 和 Infobright IEE。它们都支持多 CPU 查询,并且差异是巨大的(由于多种原因,但 CPU 是显而易见的)。

您可能需要查看Shard Query,它是 MySQL 的代理,它将您的查询拆分为多个查询,在并行进程上执行它们并返回聚合结果。