sqlite 插入數據很慢的原因是因爲它是已文件的形式存在磁盤中,每次訪問時都要打開一次文件,如果對數據進行大量的操作,那時很慢。
解決方法是用事務的形式提交:因爲我們開始事務後,進行的大量操作的語句都保存在內存中,當提交時才全部寫入數據庫,此時,數據庫文件也就只用打開一次。
我在沒有用事務形式插入4366條數據時用了507.781s,平均每一插入一條數據是116ms,用事務形式,插入只用了391ms,相關很大吧。
事務方式:
順帶一點在sqlite裏的單引號轉義不是用反斜槓'/'而是用單引號,就是在單引號前再加一個單引號('').
下面是寫的一個統計apache的腳本,apache日誌按日期分目錄,在日期目錄下按每小時分文件,日誌數據源:
124.115.0.27 - - [25/02/2011:23:00:01] "GET /images/css.css HTTP/1.1" 200 3487 "http://www.XXXX.com/index.php?categoryid=175" "Sosospider+(+http://help.soso.com/webspider.htm)"
221.130.177.108 - - [25/02/2011:22:59:53] "GET /index.php?newsid=2010122810463740 HTTP/1.1" 200 5079 "-" "-"
腳本如下: