Mysql的體系結構和存儲引擎

MySql
Mysql的體系結構和存儲引擎
1.1定義數據庫和實例
數據庫:frm,MYD,MYI,ibd,結尾的文件,當使用NDB引擎的時候,數據庫文件放在內存中
實例:後臺線程和共享內存組成。共享內存可以運行的後臺現成共享,數據庫實例纔是真正操作數據庫的
實例和數據庫的關係是一一對應的。
MySql是單進程多線程架構的數據庫,實例在系統中的表現就是一個 進程。
與Oracle的參數文件spfile相似,不同Oracle如果沒有參數文件,在啓動實例的時候,數據庫失敗。
Mysql的組成:
連接池組件
管理服務和工具組件
sql接口組件
查詢分析器組件
優化組件
緩衝Cache組件
插件式存儲引擎
物理文件
存儲引擎是基於表結構的,而不是數據庫
1.3Mysql存儲引擎
Mysql預定義的存儲引擎接口編寫自己的存儲引擎
InnoDB存儲引擎
支持事物,設計目標主要是面向在線事物處理的應用,特點是行鎖設計,支持外鍵,支持類似Oracle的非鎖定讀,默認讀寫操作不會產生鎖
放在了一個邏輯表空間中,存儲引擎的表單獨放到一個獨立的ibd文件之中
對於表中的存儲,採取了聚集的方式
MyISAM存儲引擎
不支持事物,表所設計,支持全文索引。面向一些OLAP數據庫應用
緩衝池只是緩存一些索引文件,不緩衝數據文件
引擎表是由MYD和MYI組成,MYD是用來存放數據文件,MYI用來存放索引文件,可以使用myismpack工具來進一步壓縮文件
NDB引擎
是一個集羣存儲引擎,其結構是share noting的集羣結構,數據全部放在內存中,主鍵查找的速度極快
並且通過添加NDB數據存儲節點,線性提高數據庫性能,高可用,高性能的集羣系統。
Memory引擎
表中的數據存放到內存之中,如果數據庫重啓或者崩潰,表中的數據全部消失。適用於存儲臨時表
默認使用哈希索引,不是B+樹索引。
只支持表鎖,併發性能比較差
Archeive存儲引擎
採用zlib算法進行壓縮後存儲。非常適合存儲過當數據,如日誌信息
使用行鎖來實現高併發的插入操作
主要提供高速的插入和壓縮功能。
Federate存儲引擎
引擎表並不存放數據,只是指向一臺mysql數據庫的服務器上,不支持異構數據庫的表
Maria存儲引擎
取代原有的MyiSAM存儲引擎,從而成爲Mysql的默認引擎
支持緩存數據和索引文件,應用了行鎖設計,提供了MVCC功能,支持事物和非事物安全的選項

通過show engines 查詢mysql數據庫所支持的存儲引擎
1.4連接Mysq
是一個連接進程和Mysql數據庫實例進行通信
常用的通信方式:有管道,命名管道,命名字,TCP/IP套接字,UNIX域套接字
TCPIP:
mysql -h192.168.0.0.1 -u david -p
Mysql會檢查一張權限視圖,用來判斷請求的ip是否允許連接到Mysql實例,表爲user
命名管道和共享內存
在mysql配置文件中啓動--enable>name-pipe
提供共享內存,在配置文件中,添加--shard-Memory實現
UNIX套接字
mysql -udavid -S /tmp/mysql.sock

















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