我转而使用sqlite3而不是MySQL,因为我必须在没有mysql的PBS系统上运行很多作业。当然在我的机器上我没有NFS,而PBS上有一个。花了很多时间切换到sqlite3之后,我去运行很多工作,并且我损坏了我的数据库。 当然在sqlite3常见问题解答中提到了关于NFS的问题,但是当我开始时我甚至没有考虑过这个问题。
我可以在工作开始时复制数据库,但它会变成合并的噩梦!
我绝不会向我的同事推荐sqlite,原因很简单:“sqlite不起作用(在重要的机器上)”
我已经阅读过有关NFS达不到标准的咆哮,这是他们的错。 我尝试了一些解决方法,但正如this post所示,这是不可能的。
是否有牺牲性能的解决方法?
那我该怎么办?尝试一些其他数据库软件?哪一个?
答案 0 :(得分:3)
您使用的是错误的工具。根据这种经验说“我永远不会推荐sqlite ......”有点像说“我永远不会推荐玻璃瓶”,当你用它们钉在钉子上时它们会断裂。
您需要更准确地指定问题。我尝试在你的问题之间进行阅读,这给了我类似的东西:
您有许多节点通过某些未指定的路径工作,并产生输出。作业不会交互,因为您说您可以复制数据库。完成后,可以合并所有作业的输出。你如何有效地产生合并输出?
鉴于这个问题,这是我的建议:
让每个作业在结构化文件中生成其输出,每个作业都是唯一的。作业完成后,编写一个程序来解析每个文件并将其插入到sqlite3数据库中。这以一种它可以处理的方式使用NFS(单个进程顺序写入文件)并以一种合理的方式使用sqlite3(单个进程写入本地文件系统上的数据库)。这可以避免在运行作业时出现NFS锁定问题,并且由于您没有在sqlite3数据库上发生争用,因此应该提高吞吐量。