2010-12-05 94 views
7

我需要將單行寫入放置在文件服務器上的文件。我正在考慮使用SQLite來確保該行的寫入是成功的,而不是部分完成。但是,插入性能是非常重要的。我的問題是,當SQLite向表中插入一行時,確切的過程是什麼(當它讀取,寫入,讀取等等)。該表沒有任何索引,也沒有主鍵,約束或任何內容。SQLite插入性能

回答

0

您可以使用細節解釋,當你執行一個語句會發生什麼:http://www.sqlite.org/lang_explain.html

+0

但解釋通常不夠詳細,看到每一個讀取和寫入。它只是說明是否使用了索引等。 – David 2010-12-05 13:02:22

10

你應該使用事務,從而儘量避免fsync() -ing每INSERT。對於某些基準測試,請看here

此外,一定要正確設置兩個重要pragmas

+0

您的回答在我的問題上幫了我很大忙。 Ty – ILya 2010-12-17 14:32:41

+0

謝謝。在批量導入開始時執行這個命令給了我一個巨大的速度提升:`PRAGMA synchronous = 0` – 2013-01-14 14:39:09