掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
數(shù)據(jù)庫存儲引擎是數(shù)據(jù)庫底層軟件組織,數(shù)據(jù)庫管理系統(tǒng)(DBMS)使用數(shù)據(jù)引擎進行創(chuàng)建、查詢、更新和刪除數(shù)據(jù),不同的存儲引擎...

存儲引擎
數(shù)據(jù)庫存儲引擎: 是數(shù)據(jù)庫底層軟件組織,數(shù)據(jù)庫管理系統(tǒng)(DBMS)使用數(shù)據(jù)引擎進行創(chuàng)建、查詢、更新和刪除數(shù)據(jù)。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以 獲得特定的功能?,F(xiàn)在許多不同的數(shù)據(jù)庫管理系統(tǒng)都支持多種不同的數(shù)據(jù)引擎。MySql的核心就是插件式存儲引擎。
查看存儲引擎
- SHOW ENGINES
命令來查看MySQL使用的引擎,命令的輸出為(我用的Navicat Premium):
由此可見, MySQL給用戶提供了諸多的存儲引擎,包括處理事務(wù)安全表的引擎和出來了非事物安全表的引擎。
如果要想查看數(shù)據(jù)庫默認(rèn)使用哪個引擎,可以通過使用命令:
- SHOW VARIABLES LIKE 'storage_engine';
在MySQL中,不需要在整個服務(wù)器中使用同一種存儲引擎,針對具體的要求,可以對每一個表使用不同的存儲引擎。Support列的值表示某種引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示該引擎為當(dāng)前默認(rèn)的存儲引擎。下面來看一下其中幾種常用的引擎。
InnoDB存儲引擎(推薦)
InnoDB是事務(wù)型數(shù)據(jù)庫的***引擎,支持事務(wù)安全表(ACID),支持行鎖定和外鍵,上圖也看到了,InnoDB是默認(rèn)的MySQL引擎。
InnoDB主要特性
使用 InnoDB存儲引擎 MySQL將在數(shù)據(jù)目錄下創(chuàng)建一個名為 ibdata1的10MB大小的自動擴展數(shù)據(jù)文件,以及兩個名為 ib_logfile0和 ib_logfile1的5MB大小的日志文件
MyISAM存儲引擎
MyISAM基于ISAM存儲引擎,并對其進行擴展。它是在Web、數(shù)據(jù)倉儲和其他應(yīng)用環(huán)境下最常使用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事物。
MyISAM主要特性:
使用MyISAM引擎創(chuàng)建數(shù)據(jù)庫,將產(chǎn)生3個文件。文件的名字以表名字開始,擴展名之處文件類型:frm文件存儲表定義、數(shù)據(jù)文件的擴展名為.MYD(MYData)、索引文件的擴展名時.MYI(MYIndex)
MEMORY存儲引擎
MEMORY存儲引擎將表中的數(shù)據(jù)存儲到內(nèi)存中,未查詢和引用其他表數(shù)據(jù)提供快速訪問。
MEMORY主要特性:
存儲引擎的選擇
在實際工作中,選擇一個合適的存儲引擎是一個比較復(fù)雜的問題。每種存儲引擎都有自己的優(yōu)缺點,不能籠統(tǒng)地說誰比誰好。但建議選擇使用InnoDB
InnoDB: 支持事務(wù)處理,支持外鍵,支持崩潰修復(fù)能力和并發(fā)控制。如果需要對事務(wù)的完整性要求比較高(比如銀行),要求實現(xiàn)并發(fā)控制(比如售票),那選擇InnoDB有很大的優(yōu)勢。如果需要頻繁的更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB,因為支持事務(wù)的提交(commit)和回滾(rollback)。
MyISAM: 插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現(xiàn)處理高效率。如果應(yīng)用的完整性、并發(fā)性要求比 較低,也可以使用。
MEMORY: 所有的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數(shù)據(jù)的安全性要求較低,可以選擇MEMOEY。它對表的大小有要求,不能建立太大的表。所以,這類數(shù)據(jù)庫只使用在相對較小的數(shù)據(jù)庫表。
注意:同一個數(shù)據(jù)庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務(wù)處理,可以選擇InnoDB。這個數(shù)據(jù)庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該數(shù)據(jù)庫需要一個用于查詢的臨時表,可以選擇MEMORY存儲引擎。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流