好程式設計師Java學習進階之MySQL資料庫結構和引擎比對

好程式設計師發表於2020-04-15

  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 的儲存引擎介面定義良好。有興趣的開發者透過閱讀文件編寫自己的儲存引擎。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2686309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章