Как разрешить базе данных / sql запрашивать несколько схем параллельно? - PullRequest
0 голосов
/ 21 января 2019

У меня есть база данных mysql с одним хостом и несколькими сотнями схем, где у каждой схемы есть идентичные таблицы (и разное количество строк).Здесь я хочу запросить некоторые (или все) схемы с одинаковым списком запросов и сохранить их для дальнейшего использования.
Я использую database/sql golang для запросов к базе данных, и я хочу это сделатьс одним пулом соединений и параллельным запросом каждой схемы (надеюсь, что так будет быстрее).
Я представляю что-то вроде этого:

func QuerySchemas(queryList []string, schemaList []string) {
  // Create a connection pool
  db, err := sql.Open("mysql", "user:password@tcp(db_host)/")
  if err != nil {
    log.Fatal(err)
  }

  for _, schema := range schemaList {
    // Query each schema in parallel, probably with goroutine
    go func(targetSchema string) {
      // ...
      // Let database/sql use targetSchema for this goroutine
      // ...
      for _, query := range queryList {
        rows, err := db.Query(query)
        // ...
        // Save results and do other things
        // ...
      } 
    }(schema) 
  }
}

Но я не могу найти, как разрешить database/sql запросить разные схемы параллельно.До сих пор я думал об использовании USE предложений MySQL, но это не сработало бы, так как это изменяет схему для всех программ.
Есть ли какие-либо возможные решения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...