SQLite與MySQL區別及優缺點介紹
簡單來說,SQLITE功能簡約,小型化,追求最大磁盤效率;MYSQL功能全面,綜合化,追求最大并發效率。如果只是單機上用的,數據量不是很大,需要方便移植或者需要頻繁讀/寫磁盤文件的話,就用SQLite比較合適;如果是要滿足多用戶同時訪問,或者是網站訪問量比較大是使用MYSQL比較合適。
下面詳細介紹兩者的區別和應用:
SQLite
SQLite是非凡的數據庫,他可以進程在使用它的應用中。作為一個自包含、基于文件的數據庫,SQLite提供了出色的工具集,可以處理所有類型的數據,沒有什么限制,而且比起服務器運行的進程型服務器使用起來輕松許多。
一個應用使用SQLite時,它的功能直接被集成在其中,應用會直接訪問包含數據的文件(即SQLite數據庫),而不是通過一些端口(port, socket)來交互。感謝這種底層技術,這使SQLite變得非??焖俸透咝?,并且十分強大。
SQLite支持的數據類型
- NULL:
NULL值。
- INTEGER:
有符號整數,按照設置用1、2、3、4、6或8字節存儲。
- REAL:
浮點數,使用8字節IEEE浮點數方式存儲。
- TEXT:
文本字符串,使用數據庫編碼存儲(UTF-8, UTF-16BE 或 UTF-16LE)。
- BLOB:
二進制大對象,怎么輸入就怎么存儲。
注: 想了解更多有關SQLite數據類型的信息,可以查看這一主題的 官方文檔 。
SQLite 的優點
- 基于文件:
整個數據庫都包含在磁盤上的一個文件中,因此它有很好的遷移性。
- 標準化:
盡管它看起來像個“簡化版”的數據庫,SQLite 確實支持 SQL。它略去了一些功能(RIGHT OUTER JOIN 和 FOR EACH STATEMENT),但是,又同時增加了一些其他功能。
- 對開發乃至測試都很棒:
在絕大多數應用的開發階段中,大部分人都非常需要解決方案能有并發的靈活性。SQLite 含有豐富功能基礎,所能提供的超乎開發所需,并且簡潔到只需一個文件和一個 C 鏈接庫。
SQLite的缺點
- 沒有用戶管理:
高級數據庫都能支持用戶系統,例如,能管理數據庫連接對數據庫和表的訪問權限。但由于 SQLite 產生的目的和本身性質(沒有多用戶并發的高層設計),它沒有這個功能。
- 缺乏額外優化性能的靈活性:
仍然是從設計之初,SQLite 就不支持使用各種技巧來進行額外的性能優化。這個庫容易配置,容易使用。既然它并不復雜,理論上就無法讓它比現在更快,其實現在它已經很快了。
何時使用 SQLite ?
- 嵌入式應用:
所有需要遷移性,不需要擴展的應用,例如,單用戶的本地應用,移動應用和游戲。
- 代替磁盤訪問:
在很多情況下,需要頻繁直接讀/寫磁盤文件的應用,都很適合轉為使用 SQLite ,可以得益于 SQLite 使用 SQL 帶來的功能性和簡潔性。
- 測試:
它能秒殺大部分專門針對應用業務邏輯(也就是應用的主要目的:能完成功能)的測試。
何時不用 SQLite ?
- 多用戶應用:
如果你在開發的應用需要被多用戶訪問,而且這些用戶都用同一個數據庫,那么相比 SQLite 最好還是選擇一個功能完整的關系型數據庫(例如 MySQL)。
- 需要大面積寫入數據的應用:
SQLite 的缺陷之一是它的寫入操作。這個數據庫同一時間只允許一個寫操作,因此吞吐量有限。
MySQL
MySQL 在所有大型數據庫服務器中最流行的一個. 它的特性豐富,產品的開源性質使得其驅動了線上大量的網站和應用程序. 要入手 MySQL 相對簡單,開發人員可以在互聯網上面訪問到大量有關這個數據庫的信息.
注意: 由于這個產品的普及性,大量的第三方應用、工具和集成庫對于操作這個RDBCMS的方方面面大有幫助.
Mysql沒有嘗試去實現SQL標準的全部,而是為用戶提供了很多有用的功能. 作為一個獨立的數據庫服務器,應用程序同Mysql守護進程的交互,告訴它去訪問數據庫自身 -- 這一點不像 SQLite.
MySQL支持的數據類型
- TINYINT:
一個非常小的整數.
- SMALLINT:
一個小整數.
- MEDIUMINT:
一個中間大小的整數.
- INT or INTEGER:
一個正常大小的整數.
- BIGINT:
一個大的整數.
- FLOAT:
一個小的 (單精度) 浮點數,不能是無符號的那種.
- DOUBLE, DOUBLE PRECISION, REAL:
一個正常大小 (雙精度) 的浮點數,不能使無符號的那種.
- DECIMAL, NUMERIC:
沒有被包裝的浮點數。不能使無符號的那種.
- DATE:
一個日期.
- DATETIME:
一個日期和時間的組合.
- TIMESTAMP:
一個時間戳.
- TIME:
一個時間.
- YEAR:
一個用兩位或者4位數字格式表示的年份(默認是4位).
- CHAR:
一個固定長度的字符串,存儲時總是在其固定長度的空間里右對齊.
- VARCHAR:
一個可變長度的字符串.
- TINYBLOB, TINYTEXT:
一個BLOB或者TEXT列,最大長度255 (2^8 - 1)個字符.
- BLOB, TEXT:
一個BLOB或者TEXT列,最大長度 65535 (2^16 - 1)個字符.
- MEDIUMBLOB, MEDIUMTEXT:
一個BLOB或者TEXT列,最大長度 16777215 (2^24 - 1)個字符.
- LONGBLOB, LONGTEXT:
一個BLOB或者TEXT列,最大長度4294967295 (2^32 - 1) 個字符.
- ENUM:
一個枚舉類型.
- SET:
一個集合.
MySQL的優點
- 容易使用:
安裝MySQL非常容易。第三方庫,包括可視化(也就是有GUI)的庫讓上手使用數據庫非常簡單。
- 功能豐富:
MySQL 支持大部分關系型數據庫應該有的 SQL 功能——有些直接支持,有些間接支持。
- 安全:
MYSQL 有很多安全特性,其中有些相當高級。
- 靈活而強大:
MySQL 能處理很多數據,此外如有需要,它還能“適應”各種規模的數據。
- 快速:
放棄支持某些標準,讓 MySQL 效率更高并能使用捷徑,因此帶來速度的提升。
MySQL的缺點
- 已知的局限:
從設計之初,MySQL 就沒打算做到全知全能,因此它有一些功能局限,無法滿足某些頂尖水平應用的需求。
- 可靠性問題:
MySQL 對于某些功能的實現方式(例如,引用,事務,數據審核等) 使得它比其他一些關系型數據庫略少了一些可靠性。
- 開發停滯:
盡管 MySQL 理論上仍是開源產品,也有人抱怨它誕生之后更新緩慢。然而,應該注意到有一些基于 MySQL 并完整集成的數據庫(如 MariaDB),在標準的 MySQL 基礎上帶來了額外價值。
何時使用 MySQL?
- 分布式操作:
當SQLite所提供的不能滿足你的需要時,可以把MySQL包括進你的部署棧,就像任何一個獨立的數據庫服務器,它會帶來大量的操作自由性和一些先進的功能。
- 高安全性:
MySQL的安全功能,用一種簡單的方式為數據訪問(和使用)提供了可靠的保護。
- Web網站 和 Web應用:
絕大多數的網站(和Web應用程序)可以忽視約束性地簡單工作在MySQL上。這種靈活的和可擴展的工具是易于使用和易于管理的——這被證明非常有助于長期運行。
- 定制解決方案:
如果你工作在一個高度量身定制的解決方案上,MySQL能夠很容易地尾隨和執行你的規則,這要感謝其豐富的配置設置和操作模式。
何時不用 MySQL?
- SQL 服從性:
因為 MySQL 沒有[想要]實現 SQL 的全部標準,所以這個工具不完全符合SQL。如果你需要對這樣的關系數據庫管理系統進行整合,從MySQL進行切換是不容易的。
- 并發:
即使MySQL和一些存儲引擎能夠真地很好執行讀取操作,但并發讀寫還是有問題的。
- 缺乏特色:
再次提及,根據數據庫引擎的選擇標準,MySQL會缺乏一定的特性,如全文搜索。
到此這篇關于SQLite與MySQL區別及優缺點介紹的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持本站。
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.333abb.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯系alex-e#qq.com處理。