一、MySQL體系結構

1. 連接層
最上層是一些客戶端和鏈接服務,主要完成一些類似于連接處理、授權認證、及相關的安全方案,服務器也會為安全接入的每個客戶
端驗證它所具有的操作權限,
2. 服務層
第二層架構主要完成大多數的核心服務功能,如SQL介面,并完成快取的查詢, SQL 的分析和優化,部分內置函式的執行,所有跨存
儲引擎的功能也在這一層實作, 如程序、函式等,
3. 引擎層
存盤引擎真正的負責了MySQL中資料的存盤和提取,服務器通過API和存盤引擎進行通信,不同的存盤引擎具有不同的功能,這樣我們可以根據自己的需要,來選取合適的存盤引擎,
4. 存盤層
主要是將資料存盤在檔案系統之上,并完成與存盤引擎的互動,
二、存盤引擎介紹
1. 查看存盤引擎
存盤引擎就是存盤資料、建立索引、更新/查詢資料等技術的實作方式,存盤引擎是基于表的,而不是基于庫的,所以存盤引擎也可被稱為表型別,
mysql5.5版本之后默認的引擎是InnoDB,可以根據sql陳述句查看建表陳述句
#查看建表陳述句 默認存盤引擎是InnoDB show create table account;

2. 建表時指定存盤引擎
create table 表名( 欄位1 欄位1型別, 欄位2 欄位2型別 )engine = innodb;
默認引擎就是innodb也可以省略不寫或者設定為其他存盤引擎
3. 查詢當前資料庫支持的存盤引擎
show engines;

三、存盤引擎特點
1. InnoDB
InnoDB是一種兼顧高可靠性和高性能的通用存盤引擎,在MySQL 5.5之后, InnoDB是默認的MySQL存盤引擎,
特點:
DML(增刪改)操作遵循ACID模型,支持事務
行級鎖,提高并發訪問性能
支持外鍵FOREIGN KEY約束,保證資料的完整性和正確性
檔案:
xxx.ibd: xxx代表的是表名,innoDB引擎的每張表都會對應這樣一個表空間檔案, 存盤該表的表結構(frm、 sdi)、資料和索引,
引數: innodb_ file_per_table 代表每一張表對應一個表空間
InnoDB邏輯結構:

2. MyISAM
MylSAM是MySQL早期的默認存盤引擎,
特點:
不支持事務,不支持外鍵
支持表鎖,不支持行鎖
訪問速度快
檔案:
xxx.sdi: 存盤表結構資訊
xxx.MYD: 存盤資料
xxx.MYI: 存盤索引
3. Memory
Memory引擎的表資料是存盤在記憶體中的,由于受到硬體問題、或斷電問題的影響,只能將這些表作為臨時表或快取使用,
特點:
記憶體存放
hash索引(默認)
檔案:
xxx.sdi:存盤表結構資訊
4. 三種存盤引擎的區別

四、存盤引擎的選擇
在選擇存盤引擎時,應該根據應用系統的特點選擇合適的存盤引擎,對于復雜的應用系統,還可以根據實際情況選擇多種存盤引擎進行組合,
1. InnoDB
是Mysq|的默認存盤引擎,支持事務、外鍵,如果應用對事務的完整性有比較高的要求,在并發條件下要求資料的一致性,資料操作除了插入和查詢之外,還包含很多的更新、洗掉操作,那么InnoDB存盤引擎是比較合適的選擇,
2. MyISAM
如果應用是以讀操作和插入操作為主,只有很少的更新和洗掉操作,并且對事務的完整性、并發性要求不是很高,那么選擇這個存盤引擎是非常合適的,(此類場景的使用被MongoDB取代)
3. MEMORY
將所有資料保存在記憶體中,訪問速度快,通常用于臨時表及快取,MEMORY的缺陷就是對表的大小有限制,太大的表無法快取在記憶體中,而且無法保障資料的安全性,(此類場景更多的使用被Redis取代)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/440465.html
標籤:其他
上一篇:MySQL創建和管理表
