在我的 SQLite 数据库(带有一个表和一个由两个整数组成的主键)中,我插入了大约 1GB 的数据。创建主键会隐式创建一个索引,该索引会在几次提交后减慢插入速度,因此我想暂时禁用该索引。
删除主键的自动索引时,SQLite 会抛出错误。我可以让应用程序在网络驱动器上制作数据库的透明副本,进行修改,然后将其合并回来。与大多数 SQLite/NFS 问题相反,我不需要访问并发性。正确的做法是什么?
我正在使用:
PRAGMA synchronous = OFF
PRAGMA journal_mode = OFF
PRAGMA locking_mode = EXCLUSIVE
PRAGMA temp_store = MEMORY
我正在批量插入。下一批的提交速度比前一批慢(假设由于索引的大小)。我尝试了 10k 到 50k 行之间的批次(两个整数和一个浮点数的元组)。
如果您能够合并密钥(我认为您使用的是32位,而sqlite使用64位,所以这是可能的)并按排序顺序填充数据,我打赌您将填写第一个GB,其性能与第二个和两者都足够快。