Mysql的體系結構與儲存引擎
1.1定義資料庫與實例
資料庫:frm,MYD,MYI,ibd,結尾的文件,當使用NDB引擎的時候,資料庫檔案放在記憶體中
實例:後台執行緒和共享記憶體組成。共享記憶體可以運作的後台現成共享,資料庫執行個體才是真正操作資料庫的
實例和資料庫的關係是一一對應的。
MySql是單一進程多執行緒架構的資料庫,實例在系統中的表現就是一個 進程。
與Oracle的參數文件spfile相似,不同Oracle如果沒有參數文件,在啟動實例的時候,資料庫失敗。
1.2Mysql的組成: #
連接池組件
管理服務和工具元件
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
【相關推薦】
2. MySQL最新手冊教學
#3. 資料庫設計那些事
以上是介紹Mysql中儲存引擎和體系結構教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!