У меня есть база данных Sqlite3 с таблицей и основным ключом, состоящим из двух целых чисел, и я пытаюсь вставить в нее много данных (т.е. около 1 ГБ или около того)
Проблема, с которой я сталкиваюсь, заключается в том, что создание первичного ключа также неявно создает индекс, который в моем случае приводит в заблуждение вставки в обход после нескольких коммитов (и это связано с тем, что файл базы данных находится на NFS.. sigh),
Итак, я бы хотел как-то временно отключить этот индекс. Мой лучший план до сих пор включал в себя отказ от автоматического индекса первичного ключа, однако кажется, что SQLite ему не нравится и выдает ошибку, если я попытаюсь это сделать.
Мой второй лучший план будет включать приложение, делающее прозрачные копии базы данных на сетевом диске, внося изменения, а затем объединяя их. Обратите внимание, что в отличие от большинства вопросов SQlite/NFS мне не нужен доступ concurrency.
Каким будет правильный способ сделать что-то подобное?
UPDATE:
Я забыл указать флаги, которые уже использую:
PRAGMA synchronous = OFF
PRAGMA journal_mode = OFF
PRAGMA locking_mode = EXCLUSIVE
PRAGMA temp_store = MEMORY
ОБНОВЛЕНИЕ 2: Я фактически вставляю элементы в партии, однако каждая следующая партия медленнее, чем предыдущая (я предполагаю, что это связано с размером индекса). Я пробовал делать партии между кортежами 10k и 50k, каждый из которых представляет собой два целых числа и float.