sqlite3優(yōu)缺點?
SQLite的主要優(yōu)點:
零配置(Zero Configuration)
SQlite3不用安裝,不用配置,不用啟動,關閉或者配置數(shù)據(jù)庫實例。當系統(tǒng)崩潰后不用做任何恢復操作,再下次使用數(shù)據(jù)庫的時候自動恢復。
緊湊(compactness):
SQLite是被設計成輕量級,自包含的。一個頭文件,一個lib庫,你就可以使用關系數(shù)據(jù)庫了,不用任何啟動任何系統(tǒng)進程。一般來說,整個SQLITE庫小于225KB。
可移植(Portability)
它是運行在Windows,Linux,BSD,Mac OSX和一些商用Unix系統(tǒng),比如Sun的Solaris,IBM的AIX,同樣,它也可以工作在許多嵌入式操作系統(tǒng)下,比如QNX,VxWorks,PalmOS, Symbin和Windows CE。
最大特點:采用無數(shù)據(jù)類型,所以可以保存任何類型的數(shù)據(jù),SQLite采用的是動態(tài)數(shù)據(jù)類型,會根據(jù)存入值自動判斷。SQLite具有以下五種數(shù)據(jù)類型:
1.NULL:空值。
2.INTEGER:帶符號的整型,具體取決有存入數(shù)字的范圍大小。
3.REAL:浮點數(shù)字,存儲為8-byte IEEE浮點數(shù)。
4.TEXT:字符串文本。
5.BLOB:二進制對象。
但同樣的,這樣的做法會導致在插入和修改時,要花去更多的時間。
SQLITE的缺點:
1:SQLITE不可儲存過多的數(shù)據(jù)庫,它的性能發(fā)揮最好只能在存放較小的數(shù)據(jù)量情況下。不要把它當做mysql甚至ORACLE來使用。它只是一個200K的數(shù)據(jù)庫。
2:sqlite3不像MYSQL那樣使用固定日志文件,所有使用insert、update、delete的運行效率只是一般,sqlite3的一個事務,需要調用4次fsync()操作,而一般的大型數(shù)據(jù)庫,如mysql只用到了2次。sqlite3對每個事務都創(chuàng)建一個臨時文件來記錄日志,這個日志創(chuàng)建、更新和刪除竟然使用了3次fsync()!為什么不用一個固定的日志文件呢?實在難以理解設計者的思路。可能他們把重點放在"Select"性能上吧。通過閱讀sqlite3-3.5.1的源代碼,發(fā)現(xiàn)作者也試圖對這個問題進行修正,可能由于可靠性的原因,一直沒有正式公布。