Может ли MySQL распараллелить подзапросы UNION (или вообще что-нибудь)? - PullRequest
8 голосов
/ 28 июля 2011

Я использую секционированную таблицу с большим количеством данных.Согласно документации MySQL, в списке задач есть:

Запросы с участием агрегатных функций, таких как SUM () и COUNT (), можно легко распараллелить.

.... но могу ли я достичь той же функциональности, используя подзапросы UNION?Они распараллелены или мне нужно создать многопоточный клиент для выполнения параллельных запросов со всеми возможными ключами раздела?

Редактировать:

Вопрос не только в UNION или подзапросах.Я хотел бы использовать как можно больше ядер для своих запросов.Есть ли способ сделать это (и убедиться, что это сделано), не паралеллизуя мое приложение?

Любая хорошая документация о текущих возможностях распараллеливания MySQL?

Ответы [ 3 ]

5 голосов
/ 01 августа 2011

Насколько я знаю, в настоящее время единственный способ использовать более одного потока / ядра для выполнения запросов в вашем приложении - это использовать более одного соединения.Это, конечно, делает невозможным выполнение параллельных запросов, которые являются частью одной транзакции.

1 голос
/ 28 июля 2011

Я думаю, что на подобный вопрос ответили здесь. http://forums.mysql.com/read.php?115,84453,84453

(Может быть, я должен был опубликовать это в качестве комментария, но я, честно говоря, не смог найти нигде кнопку комментария здесь.)

1 голос
/ 28 июля 2011

Различные запросы, которые объединены в один большой запрос, строго говоря, не являются подзапросами.

  • Запросы выполняются в порядке
  • Тип данных столбцов определяется первым запросом
  • По умолчанию идентичные строки удаляются (по умолчанию UNION равен DISTINCT)
  • Набор результатов не завершен, пока не будут выполнены все запросы

... нет возможности распараллелить разные запросы, поскольку все они действительно являются частью одного и того же запроса.

Возможно, вы захотите попробовать запустить разные запросы параллельно с вашим кодом, а затем объединить результаты в вашем коде, как только все запросы будут завершены.

Документацию по UNION можно найти здесь .

...