2010-12-05 3 views
7

Мне нужно написать одиночные строки в файл, размещенный на файловом сервере. Я рассматриваю возможность использования SQLite для обеспечения того, чтобы написание строки было успешным, а не только частично завершено. Однако, поскольку производительность вставки действительно необходима. Мой вопрос в том, каков точный процесс (поскольку он читает это, пишите, читайте это и т. Д.), Что SQLite проходит, когда он вставляет строку в таблицу. В таблице нет индексов, первичных ключей, ограничений или чего-либо еще.Производительность вставки SQLite

ответ

0

вы можете использовать объяснить подробности того, что происходит, когда вы выполняете оператор: http://www.sqlite.org/lang_explain.html

+0

Но объяснить, как правило, недостаточно подробно, чтобы просмотреть все прочитанные и сделанные записи. В нем просто указывается, использовался ли индекс и т. Д. – David 2010-12-05 13:02:22

10

Вы должны использовать транзакции и таким образом попытаться избежать fsync() -ную на каждом INSERT. Посмотрите here для некоторых тестов.

Кроме того, убедитесь, что правильно установить два важных pragmas:

+0

Ваш ответ очень помог мне в моей проблеме. Ty – ILya 2010-12-17 14:32:41

+0

Спасибо. Выполнение этой команды в начале массового импорта дало мне огромное увеличение скорости: `PRAGMA synchronous = 0` – 2013-01-14 14:39:09

Смежные вопросы