SQLite介紹、學習筆記、效能測試

來源:互聯網
上載者:User

標籤:

SQLite介紹、學習筆記、效能測試哪些人,哪些公司或軟體在用SQLite:

Nokia‘s Symbian,Mozilla,Abobe,Google,阿里WangWang,飛信,Chrome,FireFox
可見SQLite的穩定性及效能是不會有什麼問題的,詳細列表請參見:http://www.sqlite.org/famous.html。

網上關於SQLite的介紹一抓一大把,總結起來,他有如下特點:

SQLite優點及適應場合:

輕量級
綠色組件
單一檔案
跨平台
查詢效率極高
使用事務插入速度極快
支援limit分頁
適合查詢速度要求較高,記憶體佔用較少的場合,尤其是嵌入式作業系統,如各種手機作業系統,低並發web(99.9%網站是低並發),php環境裡原生支援SQLite,asp.net/.net winform裡可以很方便的使用System.Data.SQLite

缺點與不適應場合:

不適合并發性高的場合 如大量insert,update訪問,SQL標準支援不全

SQLite vs Access

SQLite官方網站沒有與Access對比的說明,我覺得應該是:SQLite是開源的,單檔案,不僅可以運行在Windows上,也可以運行在各種Linux系統上,而他的很多場合跟Access是不同的,他的優勢足以站在一個比Access更高的位置,所以沒有可比性,但我們普通人拿Access跟SQLite比,是因為他們交集的地方,關係到我們取捨。

交集處有:windows系統裡web/winform,

在我的測試中
一次插入5行及以上,每行有20來個字元,SQLite使用事務速度遠快於access
一次插入多行,每行有8000以上字元,SQLite使用事務速度 快於 access 一倍左右
SQLite查詢速度極快,甚至快過SQL Server 2008 r2 10倍(因為MSSQL索引列不能超過900個字元,所以varchar(max)不能建索引)
單條資料插入速度比Access略慢,事務插入大量資料,在每行資料量不大時,遠快於Access
Access經常出現資料庫壞的情況,SQLite聽說沒有這個問題。
 

SQLite極速Select測試

同樣的資料,同樣的SQL語句:
SELECT * FROM dbo.Articles WHERE txtContent LIKE ‘%柳永法%‘
在SQLite及MSSQL上執行效率讓人震撼,SQLite竟然快MSSQL 10倍,
並且SQLite沒有進程只看到程式進程記憶體沒有任何升高,而MSSQL的進程則從1G多升到了3G多

資料庫 條數 查詢用時
SQLite 118848 60s
MSSQL 118848 540s
     
SQLite 7428 6s
MSSQL 7428 60s

 

關於SQLite多線程及ASP.net並發測試view plaincopy to clipboardprint?
  1. //Winform 1000個線程同時操作,僅cpu佔用很高外,資料正常插入,沒有使用Lock  
  2. ThreadPool.SetMinThreads(1000, 1000);  
  3. ThreadPool.SetMaxThreads(1000, 1000);  
  4. for (int i = 0; i < 1000; i++)  
  5. {  
  6.     ThreadPool.QueueUserWorkItem((obj) =>  
  7.     {  
  8.         SQLiteParameter[] parms ={  
  9.         new SQLiteParameter("@txtTitle", "標題"+obj),  
  10.         new SQLiteParameter("@txtContent", "內容可以大於8000"+obj+new string(‘=‘,8000+1000)),  
  11.         new SQLiteParameter("@Adder", "添加人"+obj),  
  12.         new SQLiteParameter("@AddTime", DateTime.Now),  
  13.         new SQLiteParameter("@DeptId", 1),  
  14.         };  
  15.           
  16.         SQLiteHelper.ExecuteNonQuery(SQLiteConnectionString, CommandType.Text, @"  
  17.         insert into Articles(txtTitle,txtContent,Adder,AddTime,DeptId) values (@txtTitle,@txtContent,@Adder,@AddTime,@DeptId)  
  18.         ", parms);  
  19.       
  20.     }, i);  
  21. }  

ASP.net使用Microsoft Web Application Stress Tool進行1000個線程的壓力測試1分鐘,使用Elmah.dll記錄錯誤,測試後沒發現程式報錯,也只是很占CPU而已

通過本人測試,SQLite也應該算是比較適合高並發,及多線程,但官方說不適合,不知道是不是我測試方法不對

SQLite資源地址:

SQLite的官方首頁:
http://www.sqlite.org/

SQLite中文站:
http://www.sqlite.com.cn/

System.Data.SQLite:
http://sqlite.phxsoftware.com/

sql學習筆記之 嵌入式資料庫(sqlite,firebird)
http://www.cnblogs.com/ljzforever/archive/2010/03/09/1681453.html

SQLite GUI圖形管理工具:

SQLite Expert(可選資料庫編碼,支援原生配置各種參數,軟體更新速度極快,一天一個或多個版本,經試用,發現還有很多不完善的地方):
http://www.sqliteexpert.com/download.html

Navicat for SQLite(匯入,匯出功能強大,功能實用,操作直觀,有些小缺陷,更新速度還行):
http://www.navicat.com/en/download/download.html

SQLite Administrator(古老,但還是有很多人覺得不錯,編碼支援不強,可能亂碼):
http://sqliteadmin.orbmu2k.de/

FireFox管理SQLite的外掛程式 SQLite Manager(沒多使用。看起來不錯):
https://addons.mozilla.org/en-US/firefox/addon/5817/

 

SQLite參考資料:

開源有感系列 之開來源資料庫有感[新內容添加版本]:
http://www.cnblogs.com/unruledboy/archive/2005/02/04/98604.html

到底SQLite有多強?在我的2台機器上的壓力測試:
http://www.cnblogs.com/unruledboy/archive/2005/03/26/sqliteperformance.html

Access和Firebird及SQLite的效能比較
http://www.cnblogs.com/kevin-moon/archive/2008/12/01/1344658.html
http://www.cnblogs.com/Kevin-moon/archive/2008/11/14/1333285.html

淺談SQLite——實現與應用:
http://www.cnblogs.com/hustcat/archive/2010/01/27/1657821.html

SQLite資料庫是中小網站CMS的最佳選擇:
http://www.dbanotes.net/database/sqlite_cms.html

SQLite的局限性:
http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103309.html

sqlite常見問題:
http://dev.firnow.com/course/7_databases/sql/sqlServer/200838/103310.html

MySQL大戰SQLite(PostgreSQL強勢亂入):
http://obmem.com/?p=493

★SQLite技術上的優點和特性

  SQLite是一個輕量級、跨平台的關係型資料庫。既然號稱關係型資料庫,支援SQL92標準中常用的玩意兒(比如視圖、事務、觸發器等)就是理所當然的了,咱今天就不細說了。今天主要聊聊一些有點特色的玩意兒。

  ◇輕量級
  先說它的第一個特色:輕量級。想必SQLite的作者很看重這個特性,連它的Logo都是用的“羽毛”,來顯擺它的輕飄飄。
SQLite和C/S模式的資料庫軟體不同,它是進程內的資料庫引擎,因此不存在資料庫的用戶端和伺服器。使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,3.6.27版本也就幾百K

  ◇綠色軟體
SQLite的另外一個特點是綠色:它的核心引擎本身不依賴第三方的軟體,使用它也不需要“安裝環境”(如:Oledb等)。所以在部署的時候能夠省去不少麻煩。

  ◇單一檔案
所謂的“單一檔案”,就是資料庫中所有的資訊(比如表、視圖、觸發器、等)都包含在一個檔案內。這個檔案可以copy到其它目錄或其它機器上,也照用不誤。

  ◇跨平台/可移植性
  如果光支援主流作業系統(Windows,Linux),那就沒啥好吹噓的了。除了主流作業系統,SQLite還支援了很多小型嵌入式系統,比如Android、Windows Mobile、Symbin、Palm、VxWorks等,也就是說iPhone,Android等手機上都可以用。

  ◇記憶體資料庫(in-memory database)
這年頭,記憶體越來越便宜,很多普通PC都開始以GB為單位來衡量記憶體(伺服器就更甭提了)。這時候,SQLite的記憶體資料庫特性就越發顯得好用。
SQLite的API不區分當前操作的資料庫是在記憶體還是在檔案(對於儲存介質是透明的)。所以如果你覺得磁碟I/O有可能成為瓶頸的話,可以考慮切換為記憶體方式。切換的時候,操作SQLite的代碼基本不用大改,只要在開始時把檔案Load到記憶體,結束時把記憶體的資料庫Dump迴文件就OK了。在這種情況下,前面提到的“online backup API”就派上用場了,聰明的同學應該明白我為啥這麼期待backup功能了吧?

★技術上的缺點和不足

  前面光聊了特性和優點,為了避免槍手寫軟文的嫌疑,再來說說SQLite的一些缺點。列位看官將來如果想用它,這些缺點要權衡一下。

  ◇並發訪問的鎖機制
SQLite在並發(包括多進程和多線程)讀寫方面的效能一直不太理想。資料庫可能會被寫操作獨佔,從而導致其它讀寫操作阻塞或出錯。

  ◇SQL標準支援不全
在它的官方網站上,具體列舉了不支援哪些SQL92標準。我個人感覺比較不爽的是不支援外鍵約束。

  ◇網路檔案系統(以下簡稱NFS)
  有時候需要訪問其它機器上的SQLite資料庫檔案,就會把資料庫檔案放置到網際網路共用目錄上。這時候你就要小心了。當SQLite檔案放置於NFS時,在並發讀寫的情況下可能會出問題(比如資料損毀)。原因據說是由於某些NFS的檔案鎖實現上有Bug。

★程式設計語言介面

  SQLite支援很多種語言的編程介面。這對於我這種喜歡混用多種程式設計語言的人來說,是很爽的。下面我大概介紹一下。

  ◇C/C++
  由於SQLite本身是C寫的,它內建的API也是C介面的。所以C/C++用起來最直接了。假如你不喜歡面向過程的C API風格,可以另外找個C++的封裝庫。想重新發明輪子的同學,也可以自己封裝一個。
◇Java
如果要用Java訪問SQLite,可以通過SQLite的JDBC驅動,或者通過專門的SQLite封裝庫。我個人建議走JDBC方式,萬一將來要換資料庫,代碼就不用大改。
◇Python
pysqlite是Python操作SQLite的首選。從Python 2.5開始,它已經被整合到Python的標準庫中。看來Python社區還是蠻喜歡SQLite嘛。
◇.net
對於喜歡.net的同學,可以通過System.Data.SQLite來訪問。
◇Ruby
Ruby可以通過SQLite-Ruby操作SQLite資料庫,不過我沒用過。
◇Perl
在CPAN上有DBD::SQLite,不過我也沒用過。

★一些非技術的參考因素

  前面講的都是技術層面的話題,如果你考慮在公司的商業軟體項目中使用SQLite。還需要根據“如何選擇開源項目”裡面提到的幾個參考因素,再評估一下。
◇授權協議(License)
SQLite使用的是Public Domain協議,這是最爽一種,可以放心大膽地用。
◇使用者的普及程度
最近這幾年,使用SQLite的人越來越多(從Google Trends可以反應出來)。包括一些大公司也開始把它整合到產品中(比如Google的Gears、Apple的Safari、Adobe的AIR)。這說明它的健壯性、穩定性等方面不會有太大問題。
◇開發的活躍程度
如果到SQLite的Change Log上大致瞭解一下,可以看出最近5年基本上每1-2個月都會有更新。說明開發的活躍度還是非常高的。
從上述幾個非技術因素來看,SQLite用於商業公司的軟體項目還是非常靠譜的。


引用:
SQLite介紹、學習筆記、效能測試
http://www.yongfa365.com/item/SQLite.html

SQLite介紹、學習筆記、效能測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.