SQLite3中的并行索引创建

时间:2015-02-21 15:41:41

标签: database sqlite

  • 我有一个~40Gb的数据库,大约有100个表。
  • 为表(在所有列上)建立索引大约需要30分钟。
  • 我的服务器中有64个核心。

目前,INDEX创建过程大约需要2天(数据库创建大约需要5个小时......)因此它是我管道中的一个极端瓶颈。我试图想办法将流程并行化,一次使用1个以上的核心。这就是我到目前为止的想法:

  • 关闭所有写锁定(以某种方式?)并使用多个进程来创建INDEX。由于它们的表格不同,所以可能没问题。
  • .dump从主数据库中的每个表到它自己的小数据库(只包含一个表),在不同的核心上分别索引它们,将它们全部连接在一起(不知何故?)
  • 优化现有数据库(以某种方式?)以帮助索引器更快地完成任务。可能是将数据库移动到SSD并使用单个大CPU来计算索引(可能会节省一天),或者类似于在数据库创建时对行进行排序?显然不是一个平行的解决方案,但此时我会采取任何措施。

修改 我正在使用SQLite版本3.3.6

1 个答案:

答案 0 :(得分:1)

SQLite从不允许多个编写者,并且无法合并数据库。

如果enabled,SQLite 3.8.7或更高版本可以使用多个线程进行排序。 这可能会或可能没有帮助。