zoukankan      html  css  js  c++  java
  • [R语言]foreach和doParallel包实现多个数据库同时查询

    R语言在进行数据库查询时,每执行一条语句,都会阻塞。直到查询语句返回结果之后,才会进行下一条语句。

    为了能够实现同时对多个数据库进行查询,以节省顺序执行下来的时间,首先考虑通过多线程来进行数据库查询。

    不过多数据库同时查询,多个结果合并起来过大的话,本地机器的内存可能是一个风险点,心里要对可能需要的内存有所把握。

    R下进行多线程依赖与doParallel包和foreach包。

    > install.packages('doParallel')
    
    > install.packages('foreach')
    
    > library(doParalled)
    
    > library(foreach)
    > library(RMySQL)
    # 生成2个集群,多少个集群结合本地机器硬件配置和自己需要 
    > cl <- makeCluster(2)

    #
    注册多线程,个人理解,parallel包应该是声明在后端开启多核处理模式,让硬件准备环境,分配资源
    > registerDoParallel(cl)

    #
    %dopar%是foreach包的语法格式,表示多线程运行.
    # foreach默认返回一个list,也可以指定一个函数,在线程处理完成后直接对结果进行rbind,sum等组合操作。更多查看?foreach
    > qdata <- foreach(i=1:2) %dopar% {
      if (i == 1) conn <- connectdb_1()
      else conn <- connectdb_2()
    
      re
    <- dbGetQuery(conn, query)   dbDisconnect(conn)
      
    return(re) } # 关闭集群 > stopCluster(cl)
  • 相关阅读:
    mysql触发器的实战经验
    mysql存储程序查看
    索引性能优化(待整理)
    MySQL性能测试工具
    列级触发器 SQL Server
    synthetic division
    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de
    mysql触发器和定时器
    数据库触发器有以下的作用
    mysql 日志
  • 原文地址:https://www.cnblogs.com/oDoraemon/p/5379151.html
Copyright © 2011-2022 走看看