Java學習進階之MySQL數據庫結構和引擎比對

  MySQL是最流行的關係型數據庫管理系統,有很多Java程序員初學MySQL時都會被其繁雜的操作以及知識結構嚇到,接下來好程序員Java培訓小編就給大家簡單分析MySQL的結構與引擎對比。
  MySQL數據庫結構
  1、最上層的服務並不是MySQL獨有的,大多數基於網絡的客戶端/服務器的工具或者服務都有類似的架構。
  2、第二層架構中,大多數的MySQL的核心服務功能都在這一層,包括查詢解析、分析、優化、緩存以及所有的內置函數(日期時間等),所有跨存儲引擎的功能都在這一層實現:存儲過程、觸發器、視圖等。
  3、第三層包含了存儲引擎。存儲引擎負責MySQL中的數據的存儲和提取。MySQL支持各種不同的存儲引擎,每個存儲引擎都有它的優勢和劣勢。服務器通過API和存儲引擎進行通信。這些API接口屏蔽了不同存儲引擎之間的差異,使得這些差異對上層的查詢過程透明。存儲引擎不會解析SQL(InnoDB是個例外,它會解析外鍵定義),不同的存儲引擎之間也不能互相通信,而只是簡單的響應上層服務器的請求!
  執行流程
  數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統使用數據引擎進行創建、查詢、更新和刪除數據操作。
  不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎還可以獲得特定的功能。
  現在許多數據庫管理系統都支持多種不同的存儲引擎。MySQL的核心就是存儲引擎。

  MyISAM:擁有較高的插入,查詢速度,但不支持事務。
  InnoDB :5.5版本後MySQL的默認數據庫,事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定。
  BDB:源自Berkeley DB,事務型數據庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性。
  Memory:所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在Mysql重新啓動時丟失。
  Merge:將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用。
  Archive:非常適合存儲大量的獨立的,作爲歷史記錄的數據。因爲它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差。
  Federated:將不同的Mysql服務器聯合起來,邏輯上組成一個完整的數據庫。非常適合分佈式應用。
  Cluster/NDB:高冗餘的存儲引擎,用多臺數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用。
  CSV:邏輯上由逗號分割數據的存儲引擎。它會在數據庫子目錄裏爲每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV存儲引擎不支持索引。
  BlackHole:黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做複製的中繼
  另外,MySQL的存儲引擎接口定義良好。有興趣的開發者通過閱讀文檔編寫自己的存儲引擎。
 
  想了解更多MySQL數據庫知識,你可以關注“好程序員”微信公衆號,定期發佈技術文章和行業趨勢分析,助力你快速入行,輕鬆上崗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章