存盤引擎
一. MySQL體系結構

- MySQL Server
- 連接層:連接的處理、認證授權、安全方案、檢查是否超過最大連接數等,
- 服務層:SQL介面、決議器、查詢優化器、快取
- 引擎層:引擎是資料存盤和提取的方式,引擎層有許多引擎可供使用,也可以自定義引擎,索引是在存盤引擎層實作的,
- 存盤層:存盤資料庫的相關資料,包括資料與日志等,

二. 存盤引擎簡介
什么是存盤引擎?
存盤引擎是存盤資料、建立索引、更新/查詢資料等技術的實作方式,
存盤引擎是基于表的,而不是基于庫的,所以存盤引擎也可被稱為表型別,
- MySQL 5.5 之后默認存盤引擎為InnoDB,

1. 在創建表時指定存盤引擎
create table {表名}(
...
)engine = {存盤引擎} ...;
2. 查看當前資料庫支持的存盤引擎
show engines;

三. 存盤引擎特點

1. InnoDB
InnoDB是一種兼顧高可靠性和高性能的通用存盤引擎,在MySQL 5.5 之后,InnoDB是默認的MySQL存盤引擎,
1.1 特點
- DML操作遵循ACID模型,支持事務;
- 行級鎖,提高并發訪問性能;
- 支持外鍵FOREIGN KEY約束,保證資料的完整性和準確性;
1.2 檔案
xxx.ibd:xxx代表表名,innoDB引擎的每張表都會對應這樣一個表空間檔案,存盤該表的表結構(frm、sdi)、資料和索引,
- 引數:innodb_file_per_table:決定是多張表共用一個共享表空間還是每個表都對應一個表空間,目前默認是打開的(每個表都對應一個表空間檔案)
1.3 邏輯存盤結構
- TableSpace:表空間
- Segment:段
- Extent:區(大小固定:1M)(一個區包含64個頁)
- Page:頁(大小固定:16K)
- Row:行

2. MyISAM
MyISAM是MySQL早期的默認存盤引擎
2.1 特點
- 不支持事務,不支持外鍵
- 支持表鎖,不支持行鎖
- 訪問速度快
2.2 檔案
- .MYD:表中存放的資料
- .MYI:索引
- .sdi:存盤表結構資訊
3. Memory
Memory引擎的表資料是存盤在記憶體中的,由于受到硬體問題、或斷電問題的影響,只能將這些表作為臨時表或快取使用,
3.1 特點
- 記憶體存放(快)
- hash索引(默認)
3.2 檔案
xxx.sdi:存盤表結構資訊
資料索引在記憶體中,
四. 存盤引擎選擇
選擇存盤引擎時,應該根據應用系統的特點選擇合適的存盤引擎,
對于復雜的應用系統,還可以根據實際情況選擇多種存盤引擎進行組合,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/548500.html
標籤:其他
