SQLite批量提交与快照中提交,用于大批量插入
我需要将巨大的(约1000-4000万行)数据集转储到SQLite数据库中。每n次插入(n可能为50000、100000等)执行一次提交,与仅在插入整个4000万行之后执行提交相比,是否有优势 显然,从理论上讲,单次提交将是最快的方式。但是批量提交有什么好处吗?在我的例子中,要么是所有数据被插入,要么是非数据被插入。在进行提交之前,是否存在在SQLite中进行大量插入的危险(例如,我是否需要为SQLite提供更大的磁盘空间,因为它需要使用更大的临时文件?)SQLite批量提交与快照中提交,用于大批量插入,sql,sqlite,perl,Sql,Sqlite,Perl,我需要将巨大的(约1000-4000万行)数据集转储到SQLite数据库中。每n次插入(n可能为50000、100000等)执行一次提交,与仅在插入整个4000万行之后执行提交相比,是否有优势 显然,从理论上讲,单次提交将是最快的方式。但是批量提交有什么好处吗?在我的例子中,要么是所有数据被插入,要么是非数据被插入。在进行提交之前,是否存在在SQLite中进行大量插入的危险(例如,我是否需要为SQLite提供更大的磁盘空间,因为它需要使用更大的临时文件?) 我正在使用Perl DBI插入数据。通
我正在使用Perl DBI插入数据。通过使用以下内容,我的性能有所提高: 设置PRAGMA synchronous=OFF可防止SQLite引擎等待操作系统级写入完成 设置PRAGMA journal\u mode=MEMORY这会告诉SQLite引擎将日志存储在RAM中而不是磁盘中,唯一的缺点是在操作系统崩溃或电源故障时无法恢复数据库
接下来,在所有插入之后创建索引。此外,您可以在每100000条记录之后发出提交。是的,这有很大的优势。让我们假设提交需要0.01秒。400000*0.01=40000秒=>大约11小时。每100000做一次:4000000L/100000*0.01=你做数学:)提交就像贴邮票一样。如果您有1条记录挂起或100000条记录,则需要相同的时间。另一方面,回滚..您是在插入记录之前计算这些记录,还是这些数据来自某个文件?