MySQL基礎-框架介紹
體系結構
- 資料庫:物理作業系統檔案或其他形式檔案型別的集合,是按照某種資料模型組織起來並存放在儲存器中的資料集合。
- 例項:資料庫例項是程式,是位於使用者和作業系統之間的一層資料管理軟體。
Mysql資料庫體系結構圖:
由圖可見,MySQL由主要由以下幾部分組成:
- 連線池元件:為解決資源的頻繁分配﹑釋放所造成的問題,為資料庫連線建立一個“緩衝池”。
- 管理服務和工具元件:系統管理和控制工具,例如備份恢復、Mysql複製、叢集等;
- SQL介面元件:使用者SQL命令介面,進行DML/DDL、儲存過程、檢視、觸發器等操作和管理;
- 解析器元件:SQL命令傳遞到解析器的時候會被解析器解析和驗證。
- 優化器元件:SQL語句在查詢之前會使用查詢優化器對查詢進行優化。
- 緩衝元件:查詢快取,如果查詢快取中有查詢結果,查詢語句可以直接去查詢快取中取資料。
- 外掛式儲存引擎:儲存引擎是MySql中具體的與檔案打交道的子系統,Mysql的儲存引擎是外掛式的。
- 物理檔案
儲存引擎
MySQL的儲存引擎是外掛式的,每個儲存引擎都有各自的特點,能根據具體的應用建立不同的儲存引擎表。
MySQL主要有9種儲存引擎,可以通過show engines;
語句查詢:
Engine | Support | Comment | Transactions | XA | Savepoints |
---|---|---|---|---|---|
MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
CSV | YES | CSV storage engine | NO | NO | NO |
FEDERATED | NO | Federated MySQL storage engine | |||
PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
MyISAM | YES | MyISAM storage engine | NO | NO | NO |
InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
ARCHIVE | YES | Archive storage engine | NO | NO | NO |
資料庫應用主要分兩類:OLAP(聯機分析處理)和OLTP(聯機事務處理)。
OLAP (聯機分析處理)主要特點:
- 實時性要求不高
- 資料量大
- 併發量小
OLTP(聯機事務處理)主要特點:
- 實時性要求高
- 數量小
- 併發高
- 要求滿足ACID
儲存引擎簡介:
-
InnoDB
InnoDB是一個事務型的儲存引擎,支援行級鎖和外來鍵約束。從MySQL5.5.8版本開始,InnoDB是預設儲存引擎。其設計主要面向OLTP的應用。
-
MyISAM
MyISAM儲存引擎不支援事務、表鎖,支援全文索引,主要面向OLAP應用。
MyISAM儲存引擎由MYD和MYI組成,MYD用來存放資料檔案,MYI用來存放索引檔案。此外,MyISAM引擎的另一個與眾不同的地方是它的緩衝池只快取索引檔案。
-
Memory
Memory採用的邏輯介質是記憶體,響應速度應該是很快的,但是當資料庫重啟或發生崩潰時資料會丟失。只支援表鎖,併發效能差。
-
Archive
Archive引擎只支援INSERT和SELECT操作,支援行鎖,不支援事務。使用zlib演算法將資料行進行壓縮後儲存,壓縮比一般可達1:10。Archive儲存引擎非常適合儲存歸檔資料。Archive儲存引擎使用行鎖來實現高併發的插入操作,但是本身不是事務安全的,其設計目的主要是提供快速插入和壓縮資料功能。
-
MRG_MYISAM
Mrg_MyISAM儲存引擎,是一組MyIsam的組合,也就是說,他將MyIsam引擎的多個表聚合起來,但是他的內部沒有資料,真正的資料依然是MyIsam引擎的表中,但是可以直接進行查詢、刪除更新等操作。
-
CSV
可以將scv檔案作為MySql的表來使用,但是不支援索引。CSV引擎表所有的欄位都必須為非空的,建立的表有兩個一個是CSV檔案和CSM檔案。
-
FEDERATED
Federated儲存引擎是訪問MySQL伺服器的一個代理。
-
PERFORMANCE_SCHEMA
MySQL5.5以後新增了一個儲存引擎,就是Performance_Schema,他主要是用來收集資料庫伺服器的效能引數。MySQL使用者不能建立儲存該型別的表。
他提供了以下的功能:
- 提供程序等待的詳細資訊,包括鎖、互斥變數、檔案資訊。
- 儲存歷史的事件彙總資訊,為Mysql伺服器的效能做出詳細的判斷。
- 對於新增和刪除監控時間點都非常容易,並可以隨意的改變Mysql伺服器的監控週期
需要在配置檔案my.cnf中進行配置才能開啟。
-
BLACKHOLE
“黑洞”儲存引擎,他會丟棄所有的插入的資料,伺服器會記錄下Blackhole表的日誌,所以可以用於複製資料到備份資料庫。
檔案
資料摘抄
《MySQL技術內幕》