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