2014-10-13 5 views
0

У меня есть 10 разных серверов MySQL с одинаковым дизайном схемы. Теперь я должен запросить каждый сервер и объединить результаты в java, который аналогичен UNION ALL в SQL.Подключение нескольких MySQL-серверов с использованием JDBC Java

Все серверы БД возвращают один и тот же формат данных, и я попробовал последовательный вызов всего сервера, но это занимает больше времени.

Как ускорить процесс?

Сценарий

enter image description here

ответ

0

Это, вероятно, ваша последовательная логика:

  1. List<YourObject> arr = new ArrayList<YourObject>();
  2. X = 1.
  3. Select * из X.
  4. добавить результаты обр.
  5. X ++ до тех пор, пока не будет больше баз данных.

Я могу придумать решение, которое может потреблять меньше времени:

Как насчет этой логики:

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

  1. Создайте поток подключений к каждому серверу.
  2. Запуск потоков для подключения и ожидания результата.
  3. Каждый входящий результат добавляется к объединенному массиву. (не забудьте заблокировать глобальный массив результатов).
+0

Я уже использую этот сценарий, ища любое эффективное решение для подключения нескольких серверов db. –

Смежные вопросы