好程式設計師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 的儲存引擎介面定義良好。有興趣的開發者透過閱讀文件編寫自己的儲存引擎。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2686309/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師大資料學習路線之Logstach與flume對比程式設計師大資料
- 好程式設計師大資料培訓分享之Ambari和ClouderaManager對比程式設計師大資料Cloud
- 好程式設計師Java教程分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java學習路線之MySQL的執行計劃程式設計師JavaMySql
- 好程式設計師大資料培訓分享MySQL資料庫儲存引擎簡介程式設計師大資料MySql資料庫儲存引擎
- 後臺程式設計師如何進階大資料學習?程式設計師大資料
- 好程式設計師Java學習路線之集程式設計師Java
- 好程式設計師Python學習路線分享Linux和資料庫部分程式設計師PythonLinux資料庫
- 好程式設計師大資料學習資料之YARN資源管理程式設計師大資料Yarn
- Java進階學習之Java架構師的學習路線Java架構
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- Java 程式設計技巧之資料結構Java程式設計資料結構
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 好程式設計師大資料培訓分享之MySQL資料庫SQL簡介程式設計師大資料MySql資料庫
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java學習路線之SpringMVC之基本配置程式設計師JavaSpringMVC
- JAVA程式設計習慣之equals對比Java程式設計
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師告訴你Java架構師學習路線程式設計師Java架構
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料培訓分享之《MySQL資料庫》常用函式整理程式設計師大資料MySql資料庫函式
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 程式設計師面試之MySQL資料庫表的設計程式設計師面試MySql資料庫
- 好程式設計師大資料學習路線之zookeeper乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師Java學習路線之Java中的物件流和序列化程式設計師Java物件
- 好程式設計師Java學習資源分享RabbitMQ介紹程式設計師JavaMQ
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線之hive儲存格式程式設計師大資料Hive
- 好程式設計師Java分享MySQL之SQL入門(一)程式設計師JavaMySql
- 好程式設計師大資料培訓分享Hadoop入門進階程式設計師大資料Hadoop