如何让数据库/ sql并行查询多个模式?

时间:2019-01-21 16:40:02

标签: mysql go schema

我有一个具有单个主机和几百个模式的mysql数据库,其中每个模式都有相同的表(行数不同)。我要在此处执行的操作是使用相同的查询列表查询某些(或全部)模式,并将这些结果保存以供以后使用。
我正在使用golang的database/sql来查询数据库,我想使用单个连接池,并通过并行查询每个模式来实现这一点(希望这样做更快)。
我在想像这样的东西:

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并行查询不同的模式。到目前为止,我已经考虑过使用MySQL的USE语句,但这不能工作,因为它会更改所有goroutine的架构。
有没有可能的解决方案?

0 个答案:

没有答案