我有一个SQLite数据库,我保持打开并在进程A中写入.我希望能够以只读方式从进程B使用它.
根据该文件,
进程A将进行大量的小写操作,因此我不认为在每个事务提交上复制是有效的.
我能看到它的唯一方法是让读者等到数据库进入UNLOCKED状态,在读取期间获得SHARED锁定然后释放它.同时,进程A将要写入并将被阻塞,直到锁变为可用 - 如果有的话(如果进程B崩溃了怎么办?).这意味着进程A和进程B将争用锁 - B需要SHARED而A需要EXCLUSIVE,这会减慢速度甚至导致并发问题.
有没有办法实现我的并发写作和阅读目标?
我有一个大型数据库(~100Gb),我需要从中提取每个条目,对其执行一些比较,然后存储这些比较的结果。我尝试在单个 R 会话中运行并行查询,但没有成功。我可以同时运行多个 R 会话,但我正在寻找更好的方法。这是我尝试的:
library(RSQLite)
library(data.table)
library(foreach)
library(doMC)
#---------
# SETUP
#---------
#connect to db
db <- dbConnect(SQLite(), dbname="genes_drug_combos.sqlite")
#---------
# QUERY
#---------
# 856086 combos = 1309 * 109 * 6
registerDoMC(8)
#I would run 6 seperate R sessions (one for each i)
res_list <- foreach(i=1:6) %dopar% {
a <- i*109-108
b <- i*109
pb <- txtProgressBar(min=a, max=b, style=3)
res <- list()
for (j in a:b) {
#get preds for drug combos
statement <- paste("SELECT * from combo_tstats …Run Code Online (Sandbox Code Playgroud)